2012-02-14 66 views
0

我試圖通過努力使每一個留言板輸入個人觀點,延長Zend框架快速入門教程,但我失去了一些東西,並不斷收到這樣的錯誤:的Zend框架快速入門找到()方法操作和查看

Trying to get property of non-object in C:\wamp\www\quickstart.local\application\views\scripts\guestbook\display.phtml 

//view 
<p><?php echo $this->escape($this->entry->id); ?></strong> <a><?php echo $this->escape($this->entry->comment); ?></a><br> 
<?php echo $this->escape($this->entry->email); ?></p> 

//action 
public function displayAction() 
{ 
$id = $this->getRequest()->getParams('id'); 

$entry = new Application_Model_GuestbookMapper(); 
$this->view->entry = $entry->find($id); 
} 

而在映射查找()函數是從教程:

嘗試當我displayAction和我display.phtml下面我得到這個。

我看都在網上和只發現完全忽略了快速入門指南的結構教程。雖然他們都是堅實的自己的權利,我想找到一個解決方案。我究竟做錯了什麼?

我對一級中旬PHP和使用Zend框架初學者。回覆時請記住這一點。

+0

的觀點是假設$ this->條目不是時是一個對象。 find()方法似乎沒有返回結果。你是否證實你的數據庫參數是正確的,$ id是你期望的? – Lee 2012-02-14 18:22:03

+0

Lee,數據庫參數很好,因爲我對fetchAll()和save()方法沒有任何問題。 – jremydeaton 2012-02-14 18:34:04

+0

首先,是的,快速入門指南是相關的並且是您的需求的良好開端,其次,'find()'方法不應該佔用兩個參數? – Liyali 2012-02-15 02:45:18

回答

0

第9章詳細的解釋,你會想這樣的事情

public function displayAction() 
{ 
    $id = $this->getRequest()->getParam('id'); 
    $model = new Application_Model_Guestbook; 
    $mapper = new Application_Model_GuestbookMapper; 

    $mapper->find($id, $model); 

    if (null === $model->getId()) { 
     throw new Zend_Controller_Action_Exception(
      sprintf('Guestbook entry %d not found', $id), 404); 
    } 
    $this->view->entry = $model; 
} 
+0

試過這個。但是我得到這個錯誤:嘗試獲取非對象的屬性in..display.phtml。不知道我是否正確地做了這件事。 – jremydeaton 2012-02-15 19:23:18

+0

@JremyDeaton糟糕,我答案中的最後一行是使用錯誤的變量名稱(更改爲'$ model')。現在試試 – Phil 2012-02-15 23:39:27

+0

@phil我很困惑。在你的例子中,你將$模型分配給視圖。當$ mapper執行find()時,$ model如何返回數據?我知道這兩個組件一起工作,但這種行爲似乎違反直覺。謝謝 – RockyFord 2012-02-16 07:10:39

-2

爲了使用GuestbookMapper你需要提供的信息,兩個項目的方法,id和留言的實例的find()方法。留言簿的實例是必需的,因爲它擁有所有getter和setter映射器用來生成返回的數據。

//action updated 
public function displayAction() 
{ 
$id = $this->getRequest()->getParams('id'); 

$guestbook = new Application_Model_GuestBook(); 
$entry = new Application_Model_GuestbookMapper(); 
$this->view->entry = $entry->find($id, $guestbook); 
} 

對於這一點,如果你禁止的以下快速入門如何工作檢查出的Survive the Deepend