微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/css/218358.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。