如何将类属性设置为Symfony2表单input
如何使用Symfony2
的FormBuilder
将HTML
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参数。