2011-05-16 77 views
1

的Zend talk.I行模型方法已经称为视图“文章”里面一个partialLoop,在DB显示所有评论该职位:Zend公司:内用partialLoop

[..] 
echo $this->partialLoop('_comments.phtml',$this->comments); 

这是_comments.phtml:

<li><?= $this->text." ".$this->datetime;?></li> 

由于意见DB表的结构是:

id(PK) | text | datetime | authorId 

我想检索“AUTH作者姓名或_comments.phtml中的“DB表”,带有CommentRow的方法。

这是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迭代( )方法来显示评论的作者姓名?

感谢 卢卡

回答

2

部分视图助手期望您传入键/值结构。这可以是关联数组或对象。如果你传入一个对象,任何公共属性都将被考虑,除非该对象有一个方法返回一个具有所需键和值的关联数组。传递给助手的键和值将在部分中可用。这意味着您的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_RowsetspartialLoop(),因为你再有视图脚本里有全部访问row对象,使这一技术特别有用你可以调用它们的方法(比如从父行或相关行中检索值)。

0
foreach($this->comments as $comment) { 
echo $comment->getAuthor()->nickname; // output nickname column of author for example 
} 

更详细的例子见Zend_Db_Table_Rowset

+0

我不认为我明白= S我想要在部分循环内使用getAuthor()方法 – luca 2011-05-16 17:55:35