Symfony2 - MopaBootstrapBundle - 如何删除表单样式,但仍使用Collection类型

时间:2016-11-02 17:09:48

标签: forms symfony twitter-bootstrap-3 collections

我想要的只是很好的收藏类型,添加和删除按钮,我尝试使用assertNotEquals,但我真的很讨厌,它风格我的形式,如果我配置它不风格,那么我不能使用它提供的集合类型功能。我决定尝试BraincraftedBootstrapBundle,但我面临类似的问题。我的表单根据bundle设置样式,如果我配置不样式:

MopaBootstrapBundle

我的表单在我想要的时候再次没有样式,但是然后收集类型不起作用。我不喜欢的是该表单正在获取mopa_bootstrap: form: templating: false ,输入 - form-horizontal和标签 - form-controls类。有什么想法我错过了吗?

除了集合类型之外,我不想捆绑我的表单字段。

1 个答案:

答案 0 :(得分:0)

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

在你的conf do中:

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 %}

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