如何添加自定义类以在Symfony2 FormType中选择标记

时间:2014-05-07 00:02:56

标签: php html forms symfony twig

我需要将自定义类添加到<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标记。

有什么建议吗?

1 个答案:

答案 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')

我几乎可以肯定上面的内容会奏效。