Cakephp1.2: setメソッドを使うときの注意

CakePHPでハマッた件のメモ。

// コントローラー
$hoge_fuga = 'test';
$this->set(compact('hoge_fuga'));

// ここからビューとして・・・
<?php e($hoge_fuga); // testと表示されると思ったのに、表示されない! ?>

15分くらい悩んだ…。変数名にアンダーバーつける前まではちゃんと動いていたし、アンダーバーを付けたらダメというルールもなかった気がする(ずっと使ってたし。)
ここでミソなのが、compact関数です。
compact関数を使うと、アンダースコアがキャメルケースに変更されてしまうらしいです。

参照情報:
http://www.rainorshine.asia/2008/08/10/post602.html

ですので、アンダースコアの場合、compact関数を使わずにsetしましょう。

// コントローラー
$hoge_fuga = 'test';
$this->set('hoge_fuga', $hoge_fuga);

// ここからビューとして・・・
<?php e($hoge_fuga); // testと表示されました! ?>

以上です。
て、久々の更新がメモかよっ!


カテゴリー CakePHP, PHP | タグ | パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です