在我看来,我有一个包含 partialLoop 的部分。
但是当我运行页面时,我收到以下错误消息:

Call to a member function countComments() on a non-object in ...'_loop.phtml'

这就是我从我的观点中调用我的部分的方式:
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');

这是从局部调用partialLoops 的正确方法吗??

P.s. 我var_dumped $this->object 在我的part 里面,它是一个PostRow OBJECT.I var dumped $this->object 到_loop.phtml 并且我有5 个NULLS(代表我的id、title、text、author、datetime 字段)邮政)

谢谢

卢卡

最佳答案

我认为原因是当您将 $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/

10-12 06:05