4

小枝テンプレートのチェックボックスを確認するのに問題があります。小枝で、私はこれをしたいです:

{% for activity in form.activity %}
    {% if (activity.isChecked) %}
    <div>
        {{ form_widget(activity) }}
        {{ form_label(activity) }}
    </div>
    {% endif  %}
{% endfor %}

アクティビティは、フォームビルダーのエンティティフィールドです。

->add('activity', 'entity', array(
            'class'         => 'AcmeProspectionBundle:Activity',        
            'expanded'      => true,
            'multiple'      => true,
            'property'      => 'name',
/*
            'query_builder' => function(EntityRepository $er) use($options) {
                return $er->createQueryBuilder('ac')
                ->leftJoin('ac.company','c')
                ->where('c = :id')
                ->orderBy('ac.name', 'ASC')
                ->setParameter('id', $options['company_id']);
            }
*/
))

実際、 query_builder部分にコメントを付けないと、チェックされた部分のみが生成されますが、これを行うと、Symfonyは元の配列と送信配列の整合性をチェックします。新しいアクティビティを追加できません。実際、私は次のようにjavascriptで選択肢を生成します。

 <div class="activity_checkbox" data-prototype='<div>
 <input type="checkbox" checked="checked" value="100" placeholder="" name="acme_prospection_company[activity][]">
 <label></label></div>'>

原因3000を超える選択肢があり、元のチェックボックスを使用することも、ユーザーにそれを許可するように選択することもできません。これですべての作業が完了し、チェックしたアクティビティをレンダリングするだけで済みます。そして、私は方法がわかりません。

4

3 に答える 3

5

チェックボックスの場合、次を使用する必要があります。

{% if form.activity.vars.data %}
于 2014-12-14T13:02:21.477 に答える
0

フォーム オブジェクト内の値にアクセスするための一般的な解決策は次のとおりです。

{{ form.vars.value.NAME }}

dump メソッドを使用すると、使用可能なすべてのフォーム オブジェクトを出力できます。

{{ dump(form.vars.value) }}

本にも記載されています: http://symfony.com/doc/current/book/forms.html

于 2013-03-27T21:51:42.433 に答える