如何将类属性设置为Symfony2表单input

如何使用Symfony2FormBuilderHTML class属性设置为<input>forms?

像这样的东西:

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

我想要这个input字段的属性class设置为日历

你可以从树枝模板做到这一点:

 {{ 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版本 )来select数组,如下所示:

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

“function被破坏”并不是真的。 它工作得很好!

Symfony2将HTML class属性应用于标签和input(至less从2.1版本)是不正确的。

而且,由于attr属性本身就是一个数组,所以你可以传递任何想要为该字段渲染的HTML属性。 如果您想要传递HTML5 data-属性,这将非常有帮助。

 {{ 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()的第二个参数是一个variables数组。 Symfony中提供的模板只允许覆盖标签,如上例所示。

请参阅“关于表单variables的更多信息”以了解variables参数。