css – Symfony2 – FormBuilder – 添加一个类到字段和输入

我想在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年深入解释

相关文章

前言 最近项目做完,用户需要兼容IE,于是开展了兼容性的调整工作。边调整边想感叹IE真是个沙雕。。特将...
前言 有些属性不是很常用,但是工作中遇到了,记录一下,方便学习。 1、text-indent text-indent 属性规...
前言 政府网站会遇到公祭日的时候,网站整体颜色变灰的情况。今天正好调了一下。在此把解决方案分享给大...
需求 项目里有个消息中心,当有消息的时候,小铃铛图标可以晃两下,提示当前有信息。 实现过程 书写css...
html代码 css代码 效果图
在一些界面上 , 如果每个icon都去找图片还是相当麻烦的 , 直接使用css画出icon就方便的多了 , 下面两个...