foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

CakePHP Controller::set() した変数がビューで参照できない

環境

問題

Controller::set() した変数がビューで参照できない。
ところが、一部の変数は参照できたりもする。

解決方法

Controller::set() で指定したキー名が snake_case の場合、ビューでは camelCase で参照する。

補足

Controller::set() では以下の使い方ができる。

  • $this->set('snake_case', 1);
  • $this->set(array(...));

第1引数にキーを渡した場合は、渡した名前のまま設定される。
第2引数に配列を渡した場合は、配列のキー名が camelCase に変わって設定される。
つまり、渡し方によってビューで参照する名前が変わってしまう。

感想

これは CakePHP のバグなんじゃないかな〜と思ったりする。
名前を変換する必要なんてあるんだろうか?
変換処理の手間が報われる状況というのが思いつかない…。