2013-04-05 42 views
4

難道是可以通過$this->set('variable_name', 'some_value') 在控制器的方法本身來跟蹤所有設置變量。 其實我有一個方法,調用其他幾個方法和每個子方法設置值來查看。現在我無法跟蹤主要方法中是否設置了兩次相同的按鍵。的CakePHP知道在控制器中的所有設置變量本身

例如

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

控制器::設置()只是增加值(S)到 'viewVars' 屬性,因此調試所有這些變量,你只有做到這一點:

debug($this->viewVars); 

你可以自己發現,通過查看源內部?

view the source

+1

謝謝!!它有助於追蹤我所犯的錯誤。 是的,我必須看看它..但我錯過了這一點。 – MaNKuR 2013-04-05 12:01:59

+0

可以確認在CakePHP 3上同樣適用 – arithran 2017-03-14 14:00:05

+0

在CakePHP 3中很多事情都發生了變化,所以它可能會有所不同,但是在更換作業之後我碰了一下CakePHP已經有一段時間了 – thaJeztah 2017-03-15 10:40:36

0

一種可能的方法是將其寫入會話。例如。在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. 
    } 
} 
+0

感謝您的時間和精力 – MaNKuR 2013-04-05 13:26:46

相關問題