php – Zend在部分视图中将变量传递给PartialLoop

我在视图中有一个包含partialLoop的部分.
但是当我运行页面时,我有以下错误消息:

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

这是我在视图中调用我的部分的方式:

echo $this->partial('_post.phtml',$this->post);

其中$this-> post是DB检索的行

这是我的部分内容

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的正确方法吗?

附:我在部分内部var_dumped $this->对象,它是一个PostRow OBJECT.I var将$this->对象转换为_loop.phtml,我有5个NULLS(代表id,title,text,author,datetime fields我的帖子)

谢谢

卢卡

解决方法:

我认为原因是当你将$this-> post传递给部分视图助手时,如下所示:

$this->partial('_post.phtml',$this->post);

partial view helper将执行其toArray()方法.因此,您的$this->对象是一个数组,您将数组传递给partialLoop.因此,在partialLoop中,您尝试在表示行发布对象的数组上执行countComments(),而不是实际的行对象.

为避免这种情况,我建议使用数组表示法将变量传递给partial和partialLoop视图助手,例如:

$this->partial('_post.phtml',array('post' => $this->post));

希望这可以帮助.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...