読者です 読者をやめる 読者になる 読者になる

UNIX的なアレ

UNIX的なこととかいろいろ

$this->set(compact('foo')); するときの注意

CakePHP PHP

過去にハマってことを思い出したので、メモ。
CakePHPで、ControllerからViewへ値を渡すときはsetメソッドを使います。
複数の値を渡すときは、なんどもsetするのはコードの見通しも悪くなるのでcompactを使って一気にセットしたりします。サンプルは以下のような感じで。

<?php
class AppController extends Controller {
    〜 省略 〜
    $this->set(compact('foo','bar'));

上記の例ならとくに問題無いのですが、値に_(アンダースコア)が入った場合が要注意です。Viewで受け取るときはそのまま受け取れません。

  • app_controller.php
<?php 
class AppController extends Controller {
    〜 省略 〜
    $this->set(compact('foo_bar'));
  • view
<?php echo $fooBar ?>

こうやってやらないとsetした値を呼び出すことができません。