Мне нужно добавить собственный класс в тег select (<select>
), сгенерированный FormType
с symfony2. Все параметры создаются 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
.
Какие-либо предложения?
В вашем классе Form вы можете установить класс, используя параметр attr. Вы уже можете сделать это внутри своего типа формы или позже в своем шаблоне, как вы это делали.
Он PROBABLY не использует ваш "тестовый" класс, потому что виджет дня рождения не использует его. Пожалуйста, найдите весь проект для "birthday_widget" и посмотрите, использует ли он жесткий диск с классом контроля формы. Если это так, вы можете написать оператор 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')
Я почти уверен, что что-то выше будет работать.