1

AppController で変数が変更されない理由がわかりません。AppController のサブクラスがあり、アクション メソッドで、AppController の変数を変更しています。ただし、これは afterFilter には反映されません。

これは CakePHP の AppController です

<?php

class AppController extends Controller {

    var $xxxx;

    function beforeFilter()
    {
        $this->xxxx = 'this should be changed';
    }

    function afterFilter()
    {
        var_dump($this->xxxx);
        exit;
    }


}
?>

そして、これは私のUsersControllerです

<?php

class UsersController extends AppController {


    function view( $id )
    {
        echo "From the AppController: {$this->xxxx} \n";
        $this->xxxx = 'with this';
    }

}
?>

これを実行したときの出力は次のとおりです。

From the AppController: this should be changed
string 'this should be changed' (length=22)

私はこれを期待しています:

From the AppController: this should be changed
string 'with this' (length=9)

なぜこのように振る舞うか知っていますか?これを正しく行う方法はありますか?

4

1 に答える 1

3

afterFilter() の代わりに beforeRender() を使用する必要があります。

Request Life-cycle コールバックは、同じことを達成するのに確実に役立ちます。

うまくいかない場合は、お気軽にお問い合わせください。

于 2012-08-08T06:09:28.920 に答える