【问题标题】:Symfony2 - MopaBootstrapBundle - how to remove form styling, but still use Collection typeSymfony2 - MopaBootstrapBundle - 如何删除表单样式,但仍使用 Collection 类型
【发布时间】:2016-11-02 17:09:47
【问题描述】:

我想要的只是带有添加和删除按钮的漂亮 Collection 类型,我尝试使用 BraincraftedBootstrapBundle,但我真的很讨厌它为我的表单设置样式,如果我将其配置为不设置样式,那么我无法使用它提供的集合类型功能。我决定改用MopaBootstrapBundle,但我面临着类似的问题。我的表单是根据捆绑样式设置的,如果我配置不设置样式:

mopa_bootstrap:
    form:
        templating: false

我的表单再次取消了我想要的样式,但是集合类型不起作用。我不喜欢的事情是表单得到form-horizontal,输入 - form-controls 和标签 - form-labels 类。任何想法我错过了什么?

我希望 bundle 不对我的表单字段设置样式,集合类型除外。

【问题讨论】:

    标签: forms symfony twitter-bootstrap-3 collections


    【解决方案1】:

    您可以覆盖 mopaBootstrap 的默认样式。

    在你的 conf 中做:

    mopa_bootstrap:
        form:
            templating: YourBundle:Form:fields.html.twig
    

    然后在您的自定义 fields.html.twig 中仅使用 collection_widget 块 (https://github.com/phiamo/MopaBootstrapBundle/blob/master/Resources/views/Form/fields.html.twig):

    {% block collection_widget %}
    {% spaceless %}
    {% if prototype is defined %}
        {% set prototype_markup = form_row(prototype) %}
        {% set data_prototype_name = form.vars.form.vars.prototype.vars.name|default('__name__') %}
        {% set data_prototype_label = form.vars.form.vars.prototype.vars.label|default('__name__label__') %}
        {% set widget_form_group_attr = widget_form_group_attr|merge({
            'data-prototype': prototype_markup,
            'data-prototype-name': data_prototype_name,
            'data-prototype-label': data_prototype_label
        })|merge(attr) %}
    {% endif %}
    {# Add row by default use attr.class to change#}
    {% if 'collection' in form.vars.block_prefixes and attr.class is defined %}
        {% set widget_form_group_attr = widget_form_group_attr|merge({'class': widget_form_group_attr.class|default('row') ~ ' ' ~ attr.class}) %}
    {% endif %}
    {# collection item adds class {form_id}_form-group  too #}
    {% set widget_form_group_attr = widget_form_group_attr|merge({'id': 'collection' ~ id ~ '_form_group', 'class': widget_form_group_attr.class ~ ' collection-items ' ~ id ~ '_form_group'}) %}
    
    <div {% for attrname,attrvalue in widget_form_group_attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>
    {# Add initial prototype form #}
    {% if form.vars.value|length == 0 and prototype is defined %}
        {% for name in prototype_names %}
            {{ prototype_markup|replace({'__name__': name})|raw }}
        {% endfor %}
    {% endif %}
    {{ block('form_widget') }}
    </div>
    {% endspaceless %}
    {% endblock collection_widget %}
    

    这样的事情应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2014-03-14
      相关资源
      最近更新 更多