0

親 (エンティティ) と子 (レコード) を持つフォームがあります。親には多くの子がいます。ここまでは順調ですね。

私が必要とするのは、親を編集する場合、最新の子のみをフォーム コレクションとして表示し、すべてを表示したくないということです。

今、そのようなものを作成すると、次のようになります。

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

これで、フォーム コレクションが 1 つだけになりました — 明らかに。

現在、編集する最新のレコード(子)のみを持ち、古いレコードはすべて存在しないようにする方法を探しています。

私の目標が何であるかを言うと(おそらく他の解決策があるかもしれません)、wikiのようなものを作成したいので、親が編集されるたびに新しいリビジョンが作成されるので、古いバージョンなどを取得できます. したがって、ユーザーはすべてのバージョン (フォーム コレクションが行うこと) を見る必要はなく、最新のもの (編集するたびに作成される) だけを見る必要があります。

4

2 に答える 2

0

WikiRecordsymfony2 フォーム コレクション タイプの最新のものだけを編集するオプションはありません。ただし、テンプレートでフォーム出力を操作することで実行できます。

だから、これが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 %}

これは、最新の子のみを編集可能にする必要がある多かれ少なかれ同様の状況で使用しました。したがって、この回避策は機能しています。:)

于 2013-09-25T01:15:14.147 に答える
0

さて、私は私の問題に対する答えを見つけました。

関数を操作してgetWikiRecords()、最新のもののみを返すだけです(親関数内)

したがって、子の親エンティティでは次のようになります。

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

もちろん、すべての子が必要な場合は、別の get 関数を使用する必要があります。

于 2013-09-25T13:44:42.130 に答える