web-dev-qa-db-ja.com

CSSID属性をSymfony2フォーム入力に設定する方法

この質問は 別の質問 に似ています。そこで 解決策 CSSクラスを設定するために、FormBuilder :: add()への呼び出しの3番目のパラメーターにそれを追加することでした:

->add('title', null, array('attr' => array('class'=>'span2')))

残念ながら、これはCSSIDの設定には機能しません。私がする時

->add('title', null, array('attr' => array('id'=>'title-field')))

...これは無視されます。 IDはnamespace_formtype_fieldのようなもののままです。

CSS IDを設定するにはどうすればよいですか?

14
Olav

今では簡単な答えはないと確信しています。最も近いものは、実際には form theming を使用してマークアップを変更しているようです。ありがとう ミチ このように指してくれて。

1
Olav

次のように 'attributes'配列の外にIDを設定すると、twigでフィールドをレンダリングするときにそれを行うことができます。

{{ form_widget(form.field, { 'id': 'my_custom_id',  'attr': { 'class' : 'my_custom_class }} )}}
21
mb3rnard

twigレベルでは、次のようにするだけです。

{{ form_widget(form. title, { 'id': 'title-field' }) }}

Symfony2.3.​​4でテスト済み

8
Żabojad

HTML要素は複数のIDを持つことができないため、Symfonyはすでにフォーム要素でIDを使用しているため、実行しようとしていることは不可能です。

これを解決する方法は、代わりにクラスを使用するようにJavaScriptを変更し、

->add('title', null, array(
    'attr' => array(
        'class'=>'title-field'
    )
))

もう1つの方法は、JavaScriptが使用するIDをSymfonyのIDに変更することです。

5