Symfony2表单集 - 仅显示最新版本

时间:2013-09-23 13:42:52

标签: symfony doctrine-orm

我有一个包含父(实体)和子(记录)的表单。 父母有很多孩子。 到目前为止一切都很好。

我需要的是,如果我编辑一个家长,我想只显示最新的孩子作为一个表单集合,而不是全部。

现在创建这样的我就是这样:

$entity = new WikiEntity();
$record = new WikiRecord();
$entity->addWikiRecord($record);

有了这个,我只有一个表格集 - 显然。

现在我正在寻找一种方法,只需要编辑最新的记录(子),所有旧的记录都不应该在那里。

只是说我的目标是什么(也许还有其他解决方案),我想创建类似维基的东西,所以每次编辑父版本时都会创建一个新版本,所以我可以得到一个旧版本或者其他东西。因此,人们不需要查看所有版本(集合的形式),而只需要查看最新版本(每次编辑时都会创建)。

2 个答案:

答案 0 :(得分:0)

我看到没有选项只能编辑symfony2表单集合类型中的最新WikiRecord。但是可以通过在模板中操作表单输出来完成。

所以,这就是我如何使用twig模板。

{% for record in edit_form.wikiRecord %}
    {% if loop.length > 1 %}
        {% if loop.last %}
            {{ form_label(record.aFieldName) }}
            {{ form_widget(record.aFieldName) }}
        {% else %}
            {{ form_widget(record.aFieldName, { 'attr': {'style': 'display: none'} }) }}
        {% endif %}
    {% else %}
        {{ form_row(record) }}
    {% endif %}
{% endfor %}

我将此用于或多或少类似的情况,我必须只使最新的儿童可编辑。所以,这种解决方法正在发挥作用。 :)

答案 1 :(得分:0)

好的,我找到了解决问题的答案。

我只是操纵我的getWikiRecords()函数只返回最新的(在父函数中)

所以现在在孩子的父实体中它看起来像这样:

public function getWikiRecords() {
    $oneRecord = new ArrayCollection();
    $oneRecord[] = $this->wikiRecords->last();
    return $oneRecord;
}

当然,如果我想要所有的孩子,我现在必须使用不同的get函数。