2013-06-12 10 views
13

この質問はanother questionに似ています。そこthe solution CSSクラスがFormBuilderへの呼び出しの3番目のパラメータにそれを追加しました::()を追加設定する:CSS ID属性をSymfony2フォーム入力に設定する方法

残念ながら
->add('title', null, array('attr' => array('class'=>'span2'))) 

、これはCSSのIDを設定するために動作しません。私がするとき

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

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

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

+1

本当にデフォルトの自動生成IDを変更しますか? – Darmen

+1

残念ながら、はい。私はSymfonyに移植したいWebアプリケーションを持っていますが、Javascriptと機能テストを続けておく必要があります。それらの一部はCSS IDに依存しています。 – Olav

+2

twig {{form_widget(form、{'attr':{'id': 'タイトルフィールド'}})}} – Nisam

答えて

1

私は今すぐ簡単な答えがないと確信しています。最も近いのは実際にform themingを使用してマークアップを変更しているようです。この方法を指摘していただきありがとうございますMichi。あなたのIDを設定する場合は、小枝であなたのフィールドをレンダリングするときは、それを行うことができsymfonyの2.3.4

4

HTML要素は複数のIDを持つことができないので、達成しようとしていることはできません.Symfonyは既にフォーム要素にIDを使用しているからです。

代わりにクラスを使用するようにJavaScriptを変更して

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

他の方法を使用してすることですこれを解決する方法は、IDのJavaScriptのsymfonyのものに使用しています変更することです。

+0

Pier-Luc、ありがとうございますが、私のテストとJavascriptの2つのバージョン、つまりSymfony用と他の実装用の2つのバージョンがあります。私はむしろこれを避けるだろう。 – Olav

7

は、単にこれを行うことができます'属性'配列の外側にあるように:

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

でテスト

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

:小枝レベルで

+1

現在の「正しい」答えが間違っています。あなたのTwigでは、あなたが言ったようにIDを変更することができます。これは非常に有用で適用可能ですが、あなたのIDをユニークにするように注意するか、非常に予測できないJS – Zjoia

関連する問題