2013-05-09 89 views
1

如何在Cake 1.3中使用Cake裏面的組件功能?如何在組件中使用「set」,特別是在cakephp中?

class DevicesComponent extends Object 
{ 
    function startup($controller) 
    { 
    $this->controller = $controller; 
    } 
    function push() 
    { 
     $this->set('data', $data); 
     $this->controller->set('data', $data); 
    } 


} 

我收到以下錯誤 致命錯誤:調用未定義的方法DevicesComponent ::設置()。

我檢查不可用現有的同樣的問題,但鏈接'Set' in Components of Cake PHP

回答

1

嘗試從您的push功能刪除了$this->set('data', $data)

function push() 
{ 
    $this->controller->set('data', $data); 
} 

而且使用代替startup功能如下:

public function initialize(){ 

    $this->controller =& $controller; 

} 
+0

是的,我做同樣的事情..類DevicesComponent擴展對象 { \t功能啓動( $控制器) \t { \t \t $ this-> controller = $ controller; \t} \t功能推送() { \t \t $這 - >控制器 - >設置( '數據',$數據); } } 將錯誤報告爲「致命錯誤:調用非對象的成員函數set()」 – AnNaMaLaI 2013-05-09 09:42:03

+0

我已更新答案。 – Alvaro 2013-05-09 09:48:52

+0

爲什麼這是一個被接受的答案?這是不正確的。組件甚至沒有beforeFilter()回調。 – ADmad 2013-05-09 12:25:19

0

只刪除行$this->set('data', $data);和錯誤wi會消失。您已在下一行中具有正確的語句,通過控制器實例$this->controller->set('data', $data);設置view var。

0

試試這個代碼,它可能工作..

function startup(&$controller) 
    { 
    $this->controller = $controller; 
    } 

而在推送功能

function push() 
    { 
    $this->controller->set('data', $data); 
    }