Symfony2/Twig -添加类的形式元素


Symfony2/Twig - Add classes to form elements

我刚刚开始了一个新的Symfony2项目,在那里我使用generate:doctrine:crud快速扩展了一些视图,表单等。

生成的表单代码如下:{{ form(form) }},但包括一个通用的创建或删除按钮。我想知道我如何添加一个类到这些通用按钮或修改他们以任何方式,因为它只是包含在{{ form(form) }} ?

作为参考,我使用Twitter Bootstrap快速应用一些样式,所以我不想根据提交按钮更改css。

谢谢!

您可以在表单构建器类中指定CSS类,以避免用html填充您的Twig模板,即使是单独呈现表单。

当你调用{{ form(form) }}时,你正在使用一个帮助器来简化你的代码,这样你就不必为你的每个字段调用form_widget,但是这样做你不能控制模板中的确切显示。要做到这一点,您必须指定将应用于该字段的类。

WhateverType.php文件中,在Forms文件夹中,有表单构建器。这里应该有如下内容:

   $builder
        ->add('text')
        ->add('whatever')

你必须添加类:

   $builder
        ->add('text', 'attr'=> array('class'=>'btn')
        ->add('whatever')
然后,当您的表单显示在模板中时,它将应用您在构建器中指定的类。

在遵循dmnptr的答案(将表单分成几个部分)之后,您可以通过以下方式将参数数组传递给每个form/form_row/form_label等:

{{ form(form, { 'attr': { 'class': 'your-css-class-1 your-css-class-2' } } ) }}

attr参数为该项设置属性,因此上面的代码将产生:

<form class="your-css-class-1 your-css-class-2" ...

您将不得不手工渲染每个文件,并向TWIG中的元素添加必要的类。请参阅官方文档- http://symfony.com/doc/current/book/forms.html#rendering-each-field-by-hand