65

如何使用in将HTML class属性设置为表单?<input>FormBuilderSymfony2

像这样的东西:

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

 {{ form_widget(form.birthdate) }}

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

4

8 回答 8

121

您可以从 twig 模板执行此操作:

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

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

于 2011-07-18T16:26:45.827 回答
114

您可以使用 FormBuilder 来完成。将此添加到 FormBuilder 中的数组中:

'attr'=> array('class'=>'span2')
于 2012-03-13T12:56:24.730 回答
30

如果您想在控制器内部设置属性,Acyra 的答案是正确的,但有很多不准确之处。

是的,您可以通过使用选项数组的attr属性(此处介绍2.1 版本和此处介绍 2.0)直接使用 FormBuilder 执行此操作,如下所示:

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

“功能被破坏”是不正确的。它工作得很好!

Symfony2 将 HTMLclass属性应用于标签和输入(至少从 2.1 版本开始)是不正确的。

此外,由于attr属性本身是一个数组,因此您可以传递要为该字段呈现的任何 HTML 属性。data-如果您想传递 HTML5属性,这将非常有帮助。

于 2012-11-13T10:20:12.700 回答
7

您可以将其添加到表单类的选项中:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\MyEntity',
        'attr' => array(
            'class' => 'form-horizontal'
        )
    ));
}
于 2017-07-24T10:28:33.940 回答
4
{{ form_widget(form.content, { 'attr': {'class': 'tinyMCE', 'data-theme': 'advanced'} })  }}
于 2015-12-10T06:02:51.033 回答
3

像这样:

{{ form_widget(form.description, { 'attr': {'class': 'form-control', 'rows': '5', 'style': 'resize:none;'} }) }}
于 2016-05-20T09:47:05.977 回答
1

您可以在 Twig 或 FormClass 中执行此操作,如上面的示例所示。但是您可能想在控制器中决定您的表单应该获得哪个类。请记住,通常控制器中没有太多逻辑!

    $form = $this->createForm(ContactForm::class, null, [
        'attr' => [
            'class' => 'my_contact_form'
        ]
    ]);
于 2018-12-30T12:00:25.343 回答
0

呈现给定字段的 HTML 小部件。如果将此应用于整个表单或字段集合,则将呈现每个基础表单行。

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

form_row() 的第二个参数是一个变量数组。Symfony 中提供的模板只允许覆盖上面示例中所示的标签。

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

于 2017-08-25T23:25:30.453 回答