8

是否可以通过$this->set('variable_name', 'some_value') 控制器的方法本身跟踪所有设置的变量。实际上我有一个调用其他几个方法的方法,每个子方法都设置要查看的值。现在我无法跟踪是否在主方法中设置了两次相同的键。

例子

    function beforeFilter()
{
    $this->set('key1', 'viable value');
}


function reqMethod()
{
    $this->extendMethod1();
    $this->extendMethod2();
    $this->extendMethod3();
    $this->extendMethod4();
    $this->extendMethod5();
    $this->extendMethod6();
            // Want to track all set variable (key) here.
}

private function extendMethod1()
{
    $this->set('key1', 'unknow value');
}

在这里,key1(错误地)可能被设置为另一种方法。任何帮助真的很感激。

4

2 回答 2

6

Controller::set() 只是将值添加到 'viewVars' 属性,所以要调试所有这些变量,你只需要这样做:

debug($this->viewVars);

您可以通过查看源代码自己发现这一点吗?

查看源代码

于 2013-04-05T11:50:52.590 回答
0

一种可能的方法是将其写入会话。例如。在前置过滤器()

function beforeFilter()
{
    $this->set('key1', 'viable value');
    $this->Session->write ('key1', true);
}

private function extendMethod1()
{
    $this->set('key1', 'unknow value');
    if ($this->Session->check('key1')
     {
        // whatever needs to be done.
     }
}
于 2013-04-05T11:00:40.437 回答