2013-08-18 48 views
0

我在CakePHP安裝創造了NamesController.php上和我創建了一個搜索功能:CakePHP的 - 調用一個成員函數搜索()非對象

public function search($api_key = null,$domain = null,$keywords = null,$country = null,$type = null) { 
     $result = $this->Mails->search($keywords,$country,$type); 
     return $result; 
} 

但這返回我一個錯誤:

Call to a member function search() on a non-object 

PS:MailsController.php還包含一個搜索功能,效果很好。

爲什麼這讓我知道這個錯誤?我究竟在做什麼錯了?

提前感謝你!

+0

你確認了'郵件存在並且是一個對象嗎?後續代碼var_dump($本);並確保有一個「郵件」成員。 –

回答

0

如果你在做$this->Mails->search那麼搜索功能應該在你的郵件模型不是控制器。如果你想從Names控制器訪問Mails控制器的功能,然後執行:

//names controller 
App::import('Controller', 'Mails'); 
class NamesController extends AppController { 
.... 
public function search($api_key = null,$domain = null,$keywords = null,$country = null,$type = null) { 
    $mails = new MailsController(); 
    $result = $mails->search($keywords,$country,$type); 
    return $result; 
} 
+0

這工作,謝謝! –

+1

-1'new MailsController()'?調用另一個控制器通常是壞的體系結構的指示器(應該在模型中的控制器中的方法)。也就是說,正確的做法是使用'requestAction'而不是直接創建一個新的控制器實例 – AD7six

0

你的結果是正確的,因爲你沒有聲明這個變量。

+0

請提供正確的答案 – slfan

相關問題