Zend talk。我有一个名为“article”的视图,里面有一个partialLoop,用于显示该帖子的DB中的所有注释:
[..]
echo $this->partialLoop('_comments.phtml',$this->comments);
这是_comments.phtml:
<li><?= $this->text." ".$this->datetime;?></li>
由于注释DB表的结构是:
id(PK) | text | datetime | authorId
我想从_comments.phtml中使用CommentRow的方法从“authors”数据库表中检索作者姓名。
这是CommentRow模型:
class CommentRow extends Zend_Db_Table_Row_Abstract
{
function getAuthor()
{
$author=new Author();
$q=$author->select('name');
$q->where('id',$this->authorid);
$result=$comment->fetchRow($q);
return $result;
}
}
如何遍历注释数组(它是CommentRow类型的对象),传递给部分循环,调用getAuthor()方法显示注释的作者名称?
感谢 卢卡
答案 0 :(得分:2)
Partial View Helper希望您传入键/值结构。这可以是关联数组或对象。如果传入一个对象,则将考虑任何公共属性,除非该对象具有toArray
方法,返回具有所需键和值的关联数组。传递给帮助程序的键和值将在部分中可用。这意味着您的Zend_Db_Rowset
不再存在于部分中。请阅读以下如何正确传递它。
引用Reference Guide for the Partial View Helper:
如果您的模型是一个对象,您可能希望将它作为对象传递给部分脚本,而不是将其序列化为变量数组。您可以通过设置相应帮助程序的“objectKey”属性来执行此操作:
// Tell partial to pass objects as 'model' variable $view->partial()->setObjectKey('model'); // Tell partial to pass objects from partialLoop as 'model' variable // in final partial view script: $view->partialLoop()->setObjectKey('model');
此技术在将
Zend_Db_Table_Rowsets
传递给partialLoop()
时特别有用,因为您可以在视图脚本中完全访问行对象,从而允许您在它们上调用方法(例如从中检索值)父或从属行)。
答案 1 :(得分:0)
foreach($this->comments as $comment) {
echo $comment->getAuthor()->nickname; // output nickname column of author for example
}
有关详细示例,请参阅Zend_Db_Table_Rowset。