1
私は自分のフォームの次ChoiceType要素でSymfony3フォームクラスを作成しました:Symfony3 ChoiceTypeのchoice_attrがid属性を設定できない理由は何ですか?
->add('deg_certs', ChoiceType::class, array(
'mapped' => false,
'expanded' => true,
'multiple' => true,
'label' => 'Degrees/Certificates received:',
'choices' => array(
'BA/BS' => 'ba_bs',
'AA/AS' => 'aa_as',
'Voc. Cert.' => 'voc_cert',
'Other' => 'other',
),
'choice_attr' => function($val){
return ['class' => $val];
},
))
これは正常に動作し、選択値にクラス属性を設定します。しかし、代わりにid属性を設定したいと思います。
私はこれを試してみた:私は仕事に期待しませんが、た
'choice_attr' => function($val){
return ['id' => $val];
},
。
私も自分の小枝テンプレートでこの試みた:
{{ form_widget(form.deg_certs[3],
{'attr':{'id':'deg_other',
'onchange':'changeDegCertOther()',
'style':'float:left'}}) }}
をしかし、それはidがどちらかの属性を設定しません。注意:上記は、あなたが気にしていない場合のために、選択肢の3番目の項目のIDを設定しようとしています。
これはこれをサポートしていないSymfony3コードの問題であるようです。誰でも確認できますか?
id属性を設定する理由は、私のJavaScriptではgetElementById
ではなくgetElementsByClassName
(配列を取得)を使用したいからです。
おそらく 'id'はフィールド名に基づいてFormクラスによって設定されるためです。 'return ['data-id' => $ val]'、 '' var el = document.querySelector( '[data-id = "+ the_id_you_set +"]'のように 'data- ) '](https://jsfiddle.net/rjyjfb84/)。 –
その情報@ JaredFarrishありがとう。はい設定1あなたが指定したように 'data-id'は動作します。私の懸念は、[choice_attr code](https://symfony.com/doc/current/reference/forms/types/choice.html#choice-attr)の問題であるようです。そのドキュメントによれば、選択配列の任意の要素の属性を設定できるはずです。 Symfonyのバグを投稿する場所があるのだろうかと思います。私は回避策がありますが、私はまだそれがバグだと思います。プラス私は他の問題を見た。 –
Symfonyだけがソースと発行の制御にgithubを使用していました。ああ待って、それはありません。とにかく、idは設計どおりに動作します。フォームコンポーネントがIDを生成することは、ネストされたフォームの一意のIDを保証する唯一の方法です。 – Cerad