3

さまざまな同様の質問と回答を見てきましたが、これに適合したり、問題を解決したりするものはありません。これは非常に単純で一般的であるように見えるため、明らかな何かが欠けているように感じます。いずれかの方法:

ユーザーがさらに処理するエンティティを選択できるテーブル ビューを作成したいと考えています。明らかに、名前だけでなく、多数のデータを追加する必要があります。

「エンティティ」フォーム タイプは自然な選択のように思われるので、これを含むフォーム タイプを定義しました。

    $builder->add('items', 'entity', array(
        'multiple'=>true,
        'expanded'=>true,
        'class'=>'MySiteBundle:Item', 'property'=>'name', 'query_builder'=>function(EntityRepository $er) use ($catagory) {
            return $er->createQueryBuilder('s')->where('s.category = :cat')->andWhere('s.available=true')->orderBy('s.name')->setParameters(array('cat'=>$category));
    }));

これを考えると、どうにか小枝のエンティティにアクセスできるようになります。しかし、 form.items.vars または .get("value") または同様の質問に対して提案された他の20のことを介して、私が何を試しても、何も機能しません。

私が欲しいのは商品データ (名前、価格など) を含むテーブルだけですが、これがとても難しいとは信じられません。私が見逃している簡単で明白なことは何ですか?

ユーザーが入力する必要がある他のデータがあり、検証を利用したいので、フォームを使用する必要があります。

4

1 に答える 1

4

entityフォーム ビューから型の背後にあるエンティティにアクセスすることはできません。そのため、別のクエリでアイテムを取得する必要があります。これを簡単にするために、アイテムの配列のキーをそれらの ID に対応させます。配列をテンプレートに送信するitemsと、次のように出力できます。

<table>
    {% for item in form.items %}
        {% set id = item.get('value') %}
        <tr>
            <td>{{ form_widget(item) }}</td>
            <td>{{ items[id].name }}</td>
            <td>{{ items[id].category.name }}</td>
            <td>{{ items[id].available ? 'Yes' : 'No' }}</td>
            {# and so on ... #}
        </tr>
    {% endfor %}
</table>
于 2013-03-07T11:09:06.270 に答える