我需要将自定义类添加到<select>
使用symfony2生成的select标记(FormType
)中。
所有选项均由Symfony生成
$builder->add(
'birthday',
null,
array(
'label' => 'form.birthday'
, 'translation_domain' => 'FOSUserBundle'
)
)
,生成代码为:
<div id="fos_user_registration_form_birthday" placeholder="Mot de passe" class="form-control">
<select id="fos_user_registration_form_birthday_day" name="fos_user_registration_form[birthday][day]">
<option value="1">1</option>
...
</select>
<select id="fos_user_registration_form_birthday_month" name="fos_user_registration_form[birthday][month]">
<option value="1">jan</option>
...
</select>
<select id="fos_user_registration_form_birthday_year" name="fos_user_registration_form[birthday][year]">
<option value="1994">1994</option>
...
</select>
</div>
而且,我需要为此添加一个自定义类:
<select id="fos_user_registration_form_birthday_day" name="fos_user_registration_form[birthday][day]">
我已经在我的html内容中尝试了这个解决方案:
{{ form_widget(form.birthday, {'attr': {'placeholder': 'form.password'|trans, 'class': 'test'}}) }}
但test
课程已添加到我的div(<div id="fos_user_registration_form_birthday" placeholder="Mot de passe" class="form-control"></div>
),而不是我的select
标记。
有什么建议吗?
答案 0 :(得分:1)
在Form类中,您可以使用attr选项设置类。 您可以在表单类型中或稍后在模板中执行此操作,就像刚才那样。
它可能不会使用您的测试&#39; class,因为生日小部件不使用它。请在整个项目中搜索&#34; birthday_widget&#34;并查看它是否使用硬编码的表单控件类。如果是,您可以编写一个if语句来检查attr.class是否定义或添加如下内容:
{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}
编辑:您是否也可以尝试分别渲染每一天,每月和每年(我不确定这是否有效,因为我不知道生日类型),就像这样......
form_widget(form.birthday.day, {'attr': {'class': 'test'}})
您可以尝试的另一件事是编辑您的表单类型。
尝试在添加方法后添加此内容:
$builder->get('birthday')->get('day')->setAttribute('class', 'test'); // Also try with ->get('days')
我几乎可以肯定上面的内容会奏效。