在我看来,我有一个包含 partialLoop 的部分。 但是当我运行该页面时,出现以下错误消息:
Call to a member function countComments() on a non-object in ...'_loop.phtml'
这就是我在我的 View 中调用我的部分的方式:
echo $this->partial('_post.phtml',$this->post);
$this->post 是数据库检索的行
这是我的部分内容:
MY simplified Partial!
echo $post->countComments();//the count number is correctly output..
echo $this->partialLoop('_loop.phtml',$this->object);
这是我的partialLoop内容:
echo $this->object->countComments();//no output!
在bootstrap中我设置了:
$view->partial()->setObjectKey('object');
$view->partialLoop()->setObjectKey('object');
这是从 partials 中调用 partialLoops 的正确方法吗??
P.s. 我将 $this->object var_dumped inside partial 并且它是一个 PostRow OBJECT。我将 $this->object var dumped 到 _loop.phtml 并且我有 5 个 NULLS(代表 id,我帖子的标题、文本、作者、日期时间字段)
谢谢
卢卡
最佳答案
我认为原因是当您像这样将 $this->post
传递给部分 View 助手时:
$this->partial('_post.phtml',$this->post);
部分 View 助手将执行其 toArray()
方法。因此,您的 $this->object
是一个数组,您正在将一个数组传递给您的 partialLoop。因此,在您的 partialLoop 中,您尝试在代表您的行发布对象而不是实际行对象的数组上执行 countComments()
。
为了避免这种情况,我建议使用数组符号将变量传递给 partial 和 partialLoop View 助手,例如:
$this->partial('_post.phtml',array('post' => $this->post));
希望这对您有所帮助。
关于php - Zend 将变量传递给局部 View 中的 PartialLoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6054995/