2011-05-16 2 views
1

젠드 토크. 나는 그 게시물에 대한 DB의 모든 코멘트를 표시하기 위해 내부에 partialLoop이있는 "article"이라는 뷰를 가지고있다.Zend : partialLoop 내부에서 행 모델 메소드 사용하기

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

이것은 _comments.phtml이다.

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

주석 DB 테이블은 다음과 같습니다.

id(PK) | text | datetime | authorId 

_writes.phtml 내에서 CommentRow의 메서드로 "authors"DB 테이블에서 저자 이름을 검색하고 싶습니다.

이것은 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

부분보기 도우미는 키/값 구조를 전달할 것으로 예상합니다. 이는 연관 배열 또는 객체 일 수 있습니다. 객체를 전달할 경우 객체에 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'); 

그런 다음 뷰 스크립트 내에서 행 개체에 대한 전체 액세스 권한을 가지고 수 있도록, partialLoop()Zend_Db_Table_Rowsets를 전달할 때이 기술은 특히 유용 부모 또는 종속 행에서 값을 검색하는 등의 메소드를 호출 할 수 있습니다.

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

관련 문제