2012-02-14 71 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