2012-06-11 58 views
0

在我的模型,我有:Symfony的聯繫發電機 - 顯示學說收集

* @method Doctrine_Collection getComments() Returns the current record's "Comments" collection 

默認如果我生成的管理那麼這是不是在列表中出現。 如果是在generator.yml:

config: 
    actions: ~ 
    fields: ~ 
    list:  
    display: [id, title, comments] 
    filter: ~ 
    form: ~ 
    edit: ~ 
    new:  ~ 

那麼這告訴我

<pre> Doctrine_Collection data : Array() </pre> 

代替的評論列表。

我知道 - 我可以從緩存中獲取文件並顯示此內容,但也許這隻可能與generator.yml? 例如,如果我有一對多的關係,那麼這顯示我這個名字。

我不想爲此使用緩存! 謝謝!

回答

1

你可以使用你的問題的功能。

例如,在我的generator.yml

list:  
    display: [id, description, public, nbQuestions] 

nbQuestions是Object.class.php

public function getNbQuestions() { 
    return $this->getQuestion()->count(); 
} 

管理髮電機將自動調用該對象類中的 「getYouField」 方法的功能。所以你可以描述一個函數,它爲你的學說集合返回一個長字符串。

1

除了只顯示計數外,還有其他方法。然後在你的部分(_comments.php),你可以調用關係

list: 
    display: [id, description, public, _comments] 

,並顯示你什麼都想要(添加樣式,其他的相關信息,等:

您可以添加部分在generator.yml。 ):

<?php 
    // note that you will need to change the $object 
    echo $object->getComments()->count(); 
?> 

以另一種方式,在編輯視圖中列出所有評論可能是有用的。在您的generator.yml:

form: 
    # don't forget to add others fields 
    display: [_comments] 

,然後在部分:

<ul> 
    <?php foreach($form->getObject()->getComments() as $comment): ?> 
    <li><?php echo $comment->getBody() ?></li> 
    <?php endforeach; ?> 
</ul> 

如果你想無論是在相同的部分結合在一起(不要忘了重命名$object):

<?php if(isset($form)): ?> 

    <ul> 
    <?php foreach($form->getObject()->getComments() as $comment): ?> 
     <li><?php echo $comment->getBody() ?></li> 
    <?php endforeach; ?> 
    </ul> 

<?php elseif(isset($object)): ?> 

    <?php 
    // note that you will need to change the $object 
    echo $object->getComments()->count(); 
    ?> 

<?php endif; ?>