Symfony2 + Bootstrap3:自定义"阻止form_label"导致翻转形式

时间:2015-05-15 07:37:59

标签: twitter-bootstrap symfony symfony-forms

我想在标签的右侧放置一些带链接的图标。几乎100%解决了(阅读here完整故事)

总之,我在另一个模板中覆盖了块{%- block form_label -%},如下所示(我刚刚添加了" ADDED PART"下面):

{% extends "bootstrap_3_horizontal_layout.html.twig"%}

{%- block form_label -%}
    {% if label is not sameas(false) -%}
        {% if not compound -%}
            {% set label_attr = label_attr|merge({'for': id}) %}
        {%- endif %}
        {% if required -%}
            {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
        {%- endif %}
        {% if label is empty -%}
            {%- if label_format is not empty -%}
                {% set label = label_format|replace({
                    '%name%': name,
                    '%id%': id,
                }) %}
            {%- else -%}
                {% set label = name|humanize %}
            {%- endif -%}
        {%- endif -%}
        <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>{{ label|trans({}, translation_domain) }}
        // START OF ADDED PART
        {% if 'history' in label_attr.class %}
            <a data-toggle="modal" href="#{{historyUrl}}"><span class="glyphicon glyphicon-time" aria-hidden="true"></span></a>
        {% endif %}
        {% if 'help' in label_attr.class %}
            <a data-toggle="modal" href="#{{helpUrl}}"><span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span></a>
        {% endif %}
        // END OF ADDED PART
        </label>
    {%- endif -%}
{%- endblock form_label -%}

一切正常但我的表格被翻转(右边的标签)。

这就是我得到的:

enter image description here

我尝试了在这里和那里添加parent的一些组合,但它会导致标签重复。

我怀疑这是因为我覆盖了form_div_layout.html.twig的一部分,后来由bootstrap_3_horizontal_layout.html.twig扩展,我扩展了后者。

有关如何解决问题的任何提示?

我使用表单模板在config.yml中的全局级别分配

# Twig Configuration

twig:
    ...
    form_themes: ['Form/form_errors.html.twig']
    form:
        resources: ['Form/mylayout.html.twig']

修改

部分解决但我不喜欢这个解决方案,期待更优雅的解决方案。我做的是。

1)创建一个使用form_div_layout.html.twig添加我的标签自定义的模板。

2)复制粘贴bootstrap_3_layout.html.twig更改第一行以使其使用1)

3)复制粘贴bootstrap_3_horizontal_layout.html.twig更改第一行以使其延伸2)

4)最后使用3)作为形式主题

有点矫枉过正......其他解决方案非常受欢迎!

1 个答案:

答案 0 :(得分:0)

似乎你丢失了少量的bootstrap类,这就是你的标记被破坏的原因。 试试这个form_label块^

std::cin

我刚为bootstrap所需的设置丢失类添加了第一行:

{% block form_label -%}
{% spaceless %}
    {% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' control-label ' ~ block('form_label_class'))|trim}) %}
    {% if label is not sameas(false) -%}
        {% if not compound -%}
            {% set label_attr = label_attr|merge({'for': id}) %}
        {%- endif %}
        {% if required -%}
            {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
        {%- endif %}
        {% if label is empty -%}
            {%- if label_format is not empty -%}
                {% set label = label_format|replace({
                '%name%': name,
                '%id%': id,
                }) %}
            {%- else -%}
                {% set label = name|humanize %}
            {%- endif -%}
        {%- endif -%}
        <label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
            {{ label|trans({}, translation_domain) }}
            // START OF ADDED PART
            {% if 'history' in label_attr.class %}
                <a data-toggle="modal" href="#{{historyUrl}}"><span class="glyphicon glyphicon-time" aria-hidden="true"></span></a>
            {% endif %}
            {% if 'help' in label_attr.class %}
                <a data-toggle="modal" href="#{{helpUrl}}"><span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span></a>
            {% endif %}
            // END OF ADDED PART
        </label>
    {%- endif -%}
{% endspaceless %}
{%- endblock form_label %}