日々作業にいそしんでいるのであるが、こういった理由で未だアップデートに至っていない、という言い訳。
CakePHP 2.0 へのアップデート
大まかには変わっていないんだけど、細かいところでヘルパーの呼び出しとかが変わっていたり、paginator 関連で引数の順番が変わっていたり、基本的にはほぼ全般に渡って手を入れる必要がある。まあ、ソースコードを綺麗にするいい機会かなと。この作業はほぼ完了。
可変パラメーターへの対応
例えば、以前 Pukiwiki を使っていた時などには、
/controller/index.php?plugin=hogehoge¶m1=a¶m2=b¶m3=c
みたいな書式で可変数かつ順不同のパラメーターをコントローラー(Pukiwikiの概念ではプラグイン)に渡すことができていた。CakePHP では
/controller/a/b/c/
みたいにパラメーターを渡す順番が限られているものだとばかり思っていた。(後ろの方にあるパラメーターを省略することでパラメーターの個数を変更することは可能。)しかし、これは
/controller/param1:a/param2:b/param3:c/
という形にすることで可変数かつ順不同のパラメーターをコントローラーに渡せることが最近分かった。これらは$params[‘named’][変数名]という配列に格納されるので、
$this->params['named']['param1']
$this->params['named']['param2']
$this->params['named']['param3']
という形で各パラメーターに設定された値を取得することができる。今まではパラメーターの個数や順番によってコントローラーの動きが制限されていたのだが、これでかなり柔軟に変数を渡すことができるようになった。
今まで他のページから参照していただいた URL が変わってしまうとか、SEO 的に問題ないのか?とか多少は懸念はあるのだが …
さらに一歩進んで
例えば、今までの吹奏楽コンクールデータベースでは指揮者に着目したリスト作成には viewcond というコントローラーを使って、団体に着目したリスト作成には viewgroup というコントローラーを使っていたのだが、上記のようなパラメーターの受け渡しができるのであれば、単に
/controller/view/conductor:<conductor_id>/
/controller/view/group:<group_id>/
みたいなインターフェイスにした方がコード量は減るし、一貫性は保たれるし、のちのちのメンテナンスが楽かなあ、と思いついた。本当にうまくいくかどうかはまだ試していないのであるが、うまくいきそうな感触はある。
*****
ということで、このあたりを整理して、すかっとホームページ上のデータベースシステムも更新して、それから facebook とかで広範囲に吹奏楽コンクールのデータ提供をお願いしようかと思っているしだいです。
相変わらず本業の方も落ち着かずバタバタやっているのでリニューアルの日程的なメドも全然立たないのですが、とりあえず末永く見守っていただきたいと思います。
今後ともよろしくお願いいたします。