Edited at

【サルが書く】cakephp2.xのbeforeFilter()でセットした変数を別のアクションで使う方法

More than 1 year has passed since last update.

わきゃ


過ちを犯す

beforeFilter()で共通の処理を書こうとして、変数にいれよ〜♪と思い、


Controller/HogeController.php

class HogeController extends AppController {

public function beforeFilter() {

parent::beforeFilter();

$hoge = 'hogehoge';

}

public function index() {

echo $hoge;

}
}


のように記述しました。

これで当たり前のように出力されると考えていたのですが、しかし!

7b8e2aab-8163-428f-8824-f5477f1116f3.png

見つからないと怒られてしまいます。

これは$hogeのスコープがbeforeFilter()メソッド内で閉じてしまっているのが原因です。


一筋の光が

以下の書き方をすれば、変数が使えるようになります。


Controller/HogeController.php

class HogeController extends AppController {

public function beforeFilter() {

parent::beforeFilter();

$this->hoge = 'hogehoge';

}

public function index() {

echo $this->hoge;

// 変数に再度入れたい場合はこのようにしてください
$fuga = $this->hoge;

echo $fuga;

}
}



参考文献

http://www.php-mysql-linux.com/cake-php/beforefileter-params/