9

Javascriptでこれを行うことができましたが、cssクラスを特定のsymfony2フォームの選択肢(選択肢フィールド自体ではなく、個々の選択肢)に追加できるかどうか疑問に思っていました.

たとえば、「select」内の個々の「option」タグにさまざまな css スタイルを適用したいと考えています。タグにクラスを追加する方法しか見つかりませんでした。

前もって感謝します。

4

4 に答える 4

11

私はあなたが簡単にできると思います:

{{  form_widget(form.name, { 'attr' : { 'class' : 'myClass' } })  }}

...ここで説明したように、独自のフォーム スタイルを作成する必要はありません。

于 2012-05-27T10:05:28.540 に答える
4

すでに提供されている回答は非常に優れており、@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 という欠点がまだあることに注意してください)

于 2013-10-06T01:23:24.037 に答える
4

フォーム内の特定のウィジェットのレイアウトをオーバーライドできます。つまり、select のレンダリング方法をオーバーライドし、カスタム コードを挿入してオプションの値を確認し、そこにカスタム クラスを出力できます。

次のように、フォームにカスタム レイアウトを適用する必要があります。

{% form_theme form 'form_theme.html.twig' %}

次に、レイアウト ファイル内で、その特定のフォームの特定のフィールドをオーバーライドする必要があります (もちろん、choice_widget を直接編集したい場合を除きます。この場合、choice を使用するすべてのフィールドが機能します)。

これを行うには、ウィジェットをコピーする必要があるため、choice_widget に名前を付けます。 [_formName_fieldName_widget]

したがって、フォーム名が events で、フィールド名が requireTickets の場合、次のようになります。_events_requireTickets_widget

于 2012-05-27T08:01:39.850 に答える