我试图通过为每个guestbook条目创建一个单独的视图来扩展Zend Framework快速入门教程,但我遗漏了一些东西,并且不断收到如下错误:
Trying to get property of non-object in C:\wamp\www\quickstart.local\application\views\scripts\guestbook\display.phtml当我为我的displayAction和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);
}映射器中的find()函数与本教程中的函数相同。
我在网上找遍了,只找到一些教程,完全忽略了快速入门指南的结构。虽然它们本身都是可靠的,但我希望找到一个解决方案。我做错了什么?
我是中级的php和zend框架的初学者。请在回复时牢记这一点。
发布于 2012-02-15 14:29:27
如果你遵循快速入门的verboten,你会想要这样的东西
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;
}发布于 2012-02-15 14:15:59
为了通过GuestbookMapper ()方法使用查找,您需要向该方法提供两项信息: id和Guestbook的一个实例。guestbook的实例是必需的,因为它包含映射器用于生成返回数据的所有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的第9章
https://stackoverflow.com/questions/9281985
复制相似问题