Javascriptでこれを行うことができましたが、cssクラスを特定のsymfony2フォームの選択肢(選択肢フィールド自体ではなく、個々の選択肢)に追加できるかどうか疑問に思っていました.
たとえば、「select」内の個々の「option」タグにさまざまな css スタイルを適用したいと考えています。タグにクラスを追加する方法しか見つかりませんでした。
前もって感謝します。
Javascriptでこれを行うことができましたが、cssクラスを特定のsymfony2フォームの選択肢(選択肢フィールド自体ではなく、個々の選択肢)に追加できるかどうか疑問に思っていました.
たとえば、「select」内の個々の「option」タグにさまざまな css スタイルを適用したいと考えています。タグにクラスを追加する方法しか見つかりませんでした。
前もって感謝します。
私はあなたが簡単にできると思います:
{{ form_widget(form.name, { 'attr' : { 'class' : 'myClass' } }) }}
...ここで説明したように、独自のフォーム スタイルを作成する必要はありません。
すでに提供されている回答は非常に優れており、@CriticalImpact が最も柔軟だと思います。ただし、フォーム クラスを使用している場合は、フォーム ビルダー定義自体を介してフィールドに追加の属性を追加することもできます。
class SomeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('someField', "text", array("attr" => array("class" => "someCssClass")))
->add("save", "submit");
}
}
{{ form(someForm) }}
これは、Twig ファイルで簡単な呼び出しを行うことができるため、基本的なフォームに役立ちます。
(このソリューションには、上記の@CriticalImpact という欠点がまだあることに注意してください)
フォーム内の特定のウィジェットのレイアウトをオーバーライドできます。つまり、select のレンダリング方法をオーバーライドし、カスタム コードを挿入してオプションの値を確認し、そこにカスタム クラスを出力できます。
次のように、フォームにカスタム レイアウトを適用する必要があります。
{% form_theme form 'form_theme.html.twig' %}
次に、レイアウト ファイル内で、その特定のフォームの特定のフィールドをオーバーライドする必要があります (もちろん、choice_widget を直接編集したい場合を除きます。この場合、choice を使用するすべてのフィールドが機能します)。
これを行うには、ウィジェットをコピーする必要があるため、choice_widget に名前を付けます。 [_formName_fieldName_widget]
したがって、フォーム名が events で、フィールド名が requireTickets の場合、次のようになります。_events_requireTickets_widget