0

在我的模型中,我有:

 * @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才有可能?例如,如果我有一对多的关系,那么这会告诉我这个名字。

我不想为此使用缓存!谢谢!

4

2 回答 2

1

除了显示计数之外,还有另一种方法。

您可以在 generator.yml 中添加一个部分:

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

然后在您的部分(_comments.php)中,您可以调用关系并显示您想要的任何内容(添加样式、其他信息等):

<?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; ?>
于 2012-06-11T11:51:13.083 回答
1

你可以使用一个函数来解决你的问题。

例如,在我的generator.yml

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

nbQuestions 是一个函数Object.class.php

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

管理生成器将自动调用对象类中的“getYouField”方法。因此,您可以描述一个为您的学说集合返回长字符串的函数。

于 2012-06-11T10:57:49.663 回答