我可以用Javascript做到這一點,但我想知道如果我可以添加一個CSS類到特定的symfony2表單選擇(而不是選擇字段本身,但個人選擇)。如何添加css類到特定的symfony2表單選項?
例如,我想將不同的css樣式應用於'選擇'中的單個「選項」標籤。我只能找到一種方法來添加一個類到標籤。
在此先感謝。
我可以用Javascript做到這一點,但我想知道如果我可以添加一個CSS類到特定的symfony2表單選擇(而不是選擇字段本身,但個人選擇)。如何添加css類到特定的symfony2表單選項?
例如,我想將不同的css樣式應用於'選擇'中的單個「選項」標籤。我只能找到一種方法來添加一個類到標籤。
在此先感謝。
您可以覆蓋表單中特定窗口小部件的佈局,這意味着您可以覆蓋選擇呈現並放入自定義代碼的方式,以檢查選項的值是多少,並在那裏輸出您的自定義類。
您需要自定義佈局應用到您的形式,像這樣
{% form_theme form 'form_theme.html.twig' %}
則佈局文件中,你需要重寫的特定領域爲特殊形式(當然,除非你要編輯的choice_widget直接在這種情況下使用選擇的所有字段將具有該功能)。
要做到這一點,你需要複製的部件,所以choice_widget,然後將其命名[_formName_fieldName_widget]
所以,如果你的表單名稱是事件和您的字段名稱是requireTickets,這將會是_events_requireTickets_widget
我想你可以簡單地做:
{{ form_widget(form.name, { 'attr' : { 'class' : 'myClass' } }) }}
...如解釋here,沒有創建自己的窗體樣式。
...或者您只需用例如div標籤包裝form_widget併爲其分配屬性即可。 –
這會將標籤添加到選擇並可能添加到選項,但它不會讓您將類應用到單個選項。 – CriticalImpact
@CriticalImpact你是對的,所以OP應該創建一個自定義樣式。 – gremo
已經提供的答案非常好,我認爲@ CriticalImpact是最靈活的。但我只是想提一提,如果你使用一個窗體類,你也可以到外地通過表單生成器定義本身添加額外的屬性:
class SomeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('someField', "text", array("attr" => array("class" => "someCssClass")))
->add("save", "submit");
}
}
,我發現這是很有幫助的基本形式,是因爲它仍然允許您在Twig文件中進行簡單的{{ form(someForm) }}
調用。
(注意,這個解決方案仍然有@CriticalImpact提到above缺點)
添加屬性,如CSS樣式個人的選擇如今可以用choice_attr實現,如:
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
// ...
$builder->add('attending', ChoiceType::class, array(
'choices' => array(
'Yes' => true,
'No' => false,
'Maybe' => null,
),
'choice_attr' => function($val, $key, $index) {
// adds a class like attending_yes, attending_no, etc
return ['class' => 'attending_'.strtolower($key)];
},
));
謝謝你,我不需要類名來應用特定的樣式,但少數jQuery插件依賴於具有特定類的