0

チェックボックスを反復できる小枝テンプレートにいくつかの選択肢(多対多の関係)を持つフォームウィジェットがあります:

  {% for choice in form.downloads %}
            {{ form_widget(choice) }} {{ form_label(choice) }}<br />
  {% endfor %}

選択肢に直接アクセスしたい (それらはフォーマットされている必要があります) いくつかの構文を試しましたが、機能しません

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br />
{{ form_widget(form.downloads['0']) }} {{ form_label(form.downloads['0']) }}<br />
{{ form_widget(form.downloads[0]) }} {{ form_label(form.downloads[0]) }}<br />

間違った配列キーを使用していますか、それとも配列へのアクセスは一般的に不可能ですか?

4

1 に答える 1

2

Twig を使用している場合は、配列アクセスが可能です。を使用して最初に生成されたチェックボックスにアクセスしようとしたときに発生したエラーだと思います

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br />

Method "0" for object "Symfony\Component\Form\FormView" does not exist in ...

したがって、チェックボックスの子の名前を使用するだけです。buildForm には次のようなものが必要です。

 $builder->add('childName', 'anyTypeYouWant', array())

しかし、コレクション型を使用してチェックボックスを生成していると思います。この特定のケースでは

{{ form_widget(form.downloads.0) }} {{ form_label(form.downloads.0) }}<br />

うまくいくはずです!カスタマイズされたキーなしで特定のコレクション フィールドにアクセスするために既に使用しています。

form.downloads を確認するには、twig デバッグ拡張機能も使用する必要があります。

{% debug form.downloads %}

デバッグが機能しない場合は、「app/config/config.yml」ファイルに追加する必要があります

services:
    debug.twig.extension:
        class: Twig_Extensions_Extension_Debug
        tags: [{ name: 'twig.extension' }]
于 2012-06-13T16:04:08.703 に答える