Как установить атрибут класса для ввода формы Symfony2

Как установить атрибут class HTML в форму <input> с помощью FormBuilder в Symfony2 ?

Что-то вроде этого:

 ->add('birthdate', 'date',array( 'input' => 'datetime', 'widget' => 'single_text', 'attr' => array( 'class' => 'calendar' ) )) {{ form_widget(form.birthdate) }} 

Я хочу это поле input с class атрибута, установленным в календарь

Related of "Как установить атрибут класса для ввода формы Symfony2"

Вы можете сделать это из шаблона ветки:

 {{ form_widget(form.birthdate, { 'attr': {'class': 'calendar'} }) }} 

От http://symfony.com/doc/current/book/forms.html#rendering-each-field-by-hand

Вы можете сделать это с помощью FormBuilder. Добавьте это в массив в FormBuilder:

 'attr'=> array('class'=>'span2') 

Ответ Acyra ведет правильный путь, если вы хотите установить атрибуты внутри контроллера, но имеет много неточностей.

Да, вы можете сделать это напрямую с помощью FormBuilder, используя атрибут attr (представленный здесь для версии 2.1 и здесь для 2.0 ) для массива параметров следующим образом:

 ->add('birthdate', 'date',array( 'input' => 'datetime', 'widget' => 'single_text', 'attr' => array('class'=>'calendar') )) 

Неверно, что «функциональность сломана». Он работает очень хорошо!

Неверно, что Symfony2 применяет атрибут class HTML как к метке, так и к входу (по крайней мере, из версии 2.1).

Более того, поскольку атрибут attr является самим массивом, вы можете передать любой атрибут HTML, который вы хотите отобразить для этого поля. Это очень полезно, если вы хотите передать атрибуты data- HTML5.

 {{ form_widget(form.content, { 'attr': {'class': 'tinyMCE', 'data-theme': 'advanced'} }) }} 

Как это:

 {{ form_widget(form.description, { 'attr': {'class': 'form-control', 'rows': '5', 'style': 'resize:none;'} }) }} 

Вы можете добавить его в параметры вашего класса формы:

 public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'AppBundle\Entity\MyEntity', 'attr' => array( 'class' => 'form-horizontal' ) )); } 

Отображает HTML-виджет данного поля. Если вы примените это ко всей форме или коллекции полей, каждая строка строки будет отображаться.

{# render a field row, but display a label with text "foo" #} {{ form_row(form.name, {'label': 'foo'}) }}

Второй аргумент form_row () – это массив переменных. Шаблоны, представленные в Symfony, позволяют только переопределить ярлык, как показано в примере выше.

См. «Дополнительные сведения о переменных формы», чтобы узнать о аргументе переменных.