Symfony2, Как сделать класс метки метки /attr отличным от его ввода?
Я хотел бы создать форму с меткой и вводами, но класс их должен быть другим. Код ниже создает метку для ввода с тем же attr:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('hours', null ,
array('attr'=>
array(
'placeholder'=>'Working Hours',
'class'=>'ui-spinner-box') ) )
}
В моем коде выше ui-spinner-box
будет выводиться как для метки, так и для ввода. Он даже поставит placeholder для своей метки.
Итак, как заставить его создавать attr
для метки отдельно, чтобы я мог выводить что-то вроде ниже:
<label class="MYCLASSFOR_LABEL" for="input_id">Hours</label>
<input class="MYCLASSFOR_INPUTS" type="text" id="input_id" name="" value="" >
Ответы
Ответ 1
Как указано в документации :
- attr: массив значений ключа, который будет отображаться как атрибуты HTML в поле
- label_attr: массив значений ключа, который будет отображаться как атрибуты HTML на ярлыке
Вы можете установить эти атрибуты в шаблоне ветки или в построителе форм:
Шаблон Twig:
-
для Symfony 2.1 и более нового использования:
{{ form_label(form.hours, null, {'label_attr': {'class': 'foo'}}) }}
-
в устаревшем Symfony 2.0 он был
{{ form_label(form.hours, { 'label_attr': {'class': 'MYCLASSFOR_LABEL'} }) }}
{{ form_widget(form.hours, { 'attr': {'class': 'MYCLASSFOR_INPUTS'} }) }}
Конструктор форм
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('hours', null, array(
'label_attr' => array('class' => 'MYCLASSFOR_LABEL'),
'attr' => array('class' => 'MYCLASSFOR_INPUTS'),
));
}
Ответ 2
Это может быть ново, но есть простой способ сделать это сейчас:
$builder
->add('hours', null , array(
'attr'=>
array(
'placeholder'=>'Working Hours',
'class'=>'MYCLASSFOR_INPUTS')
) ,
'label_attr' => array(
'class' => 'MYCLASSFOR_LABEL'
)
);
Вы можете выбрать label_attr
.
Ответ 3
Это работает для меня в Symfony 2.3:
{{ form_row(form.hours, { 'label': 'Hours:'
,'label_attr': {'class': 'MYCLASSFOR_LABEL'}
,'attr': {'class': 'MYCLASSFOR_INPUTS'}
}
)
}}
Ответ 4
Вышеизложенное перестает быть правильным, по крайней мере, в контексте, который я использовал. В Symfony 2.1 решение:
{{ form_label(form.item, label|default(null), { 'label_attr': { 'class': 'MYCLASS' } }) }}