CakePHP AppController afterFilter变量继承怪异

时间:2012-08-08 05:59:54

标签: php oop cakephp

我不明白为什么AppController中的变量没有改变。我有一个AppController的子类,在action方法中,我正在更改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)

你知道它为什么会这样吗?任何指针如何正确地做到这一点?

1 个答案:

答案 0 :(得分:3)

你应该使用beforeRender()而不是afterFilter()。

Request Life-cycle callbacks肯定会帮助你实现同样目标。

请问它是否对您不起作用。