首页 > 解决方案 > Twig - 带有原始标签的 Bootstrap 4 布局

问题描述

bootstrap_4_layout.html.twig在 symfony 3.4 中使用主题,我想像这样覆盖我的标签(添加下载链接):

{% use "bootstrap_4_layout.html.twig" %}
{% block post_file_widget %}
    {% set download_uri = form.file.vars.download_uri %}
    {{ form_label(form.file, 'label.file'|trans~'<a href="'~download_uri~'">('~'current.file'|trans~')</a>' }}

    {{- block('form_widget') -}}
{% endblock %}

这是呈现形式的源文本

<legend class="col-form-label">File &lt;a href="/uploads/5/c/5cb5daef7f214545309154.JPG"&gt;(current file)&lt;/a&gt;</legend>

这是bootstrap_4_layout.html.twig中负责的短源代码:

<...>{{ translation_domain is same as(false) ? label : label|trans({}, translation_domain) }}</...>

到目前为止我已经尝试过:

  1. 用过滤器覆盖form_label块:|raw

    {%- block form_label -%}
         {% set label = label|raw %}
         {{ parent() }}
    {%- endblock -%}
    
  2. 或者在我的自定义块中添加|raw过滤器:

    {{ form_label(form.file, 'label.file'|trans~'<a href="'~download_uri~'">('~'current.file'|trans~')</a>'|raw }}
    
  3. form_label如果我从块中复制整个 30 行bootstrap_4_layout并将其附加到负责的行,则|raw过滤器正在工作

    <...>{{ translation_domain is same as(false) ? label|raw : label|trans({}, translation_domain)|raw }}</...>
    

但我认为复制 30 行代码只是|raw为它附加过滤器是一个非常愚蠢和肮脏的解决方案。

所以我的问题:

标签: symfonytwigsymfony-forms

解决方案


推荐阅读