我想在symfony2内的某些输入或标签字段中添加一个类。
我可以在Twig中以我的形式做这样的事情:
<div class="row"> {{ form_label(form.subject) }} {{ form_widget(form.subject,{ 'attr': {'class': 'c4'} }) }} </div>
哪个工作正常但是我必须为每个表单设置模板。我必须把它分解成尽可能小的输出级别。我其实是想用:
{{ form_widget(form) }}
所以,我在想,我如何在以下地方添加一个css类:
class SystemNotificationType extends AbstractType { public function buildForm(FormBuilder $builder,array $options) { $builder ->add('subject','text',array( 'label' => 'Subject' ) ) –
我认为这可能更有用,因为我只需要在一个地方进行更改。
那么怎么可能这样做,或者也许我在想错误的方式。
任何帮助都会很棒,
非常感谢,
菲利普
解决方法
一个字段的类是您的应用程序的表示层的一部分,因此最好为您的表单创建一个twig主题:
在资源/视图/表单中创建一个文件fields.html.twig,并定义如何形成表单行,例如:
{% block field_row %} <div class="row"> {{ form_errors(form) }} {{ form_label(form) }} {{ form_widget(form,{ 'attr': {'class': 'c4'} }) }} </div> {% endblock field_row %}
如果要仅自定义某个字段,例如formName格式的fieldName,则自定义行:
{% block _formName_fieldName_row %} <div class="row"> {{ form_label(form) }} {{ form_errors(form) }} {{ form_widget(form,{ 'attr': {'class': 'c4'} }) }} </div> {% endblock %}
编辑:仅定制字段:
{% block _formName_fieldName_widget %} {% set type = type|default('text') %} <input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" class="c4" /> {% endblock %}
{% form_theme form 'MyBundle:Form:fields.html.twig' %}
这在the cookbook年深入解释