8

$this->set('variable_name', 'some_value') コントローラーのメソッド自体で、設定されたすべての変数を追跡することは可能ですか。実際には、他のいくつかのメソッドを呼び出すメソッドがあり、各サブメソッドが値を表示するように設定しています。メイン メソッドで同じキーが 2 回設定されているかどうかを追跡できません。

    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

考えられる 1 つの方法は、セッションに書き込むことです。例えば。beforeFilter()で

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 に答える