symfony - Twig form_theme _self 自定义单个字段

标签 symfony twig

我有一个 View ,我试图根据 http://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field 覆盖单个字段的表单主题.

View 看起来像这样:

{% form_theme form _self %}

{% block _my_form_foo_widget %}
    <div class="input-append">
        {{ block('number_widget') }}
        <span class="add-on">%</span>
    </div>
{% endblock %}

<form>
    {{ form_row(form.foo) }}
    {{ form_row(form.bar) }}
</form>

对于 foo 和 bar 行,一切看起来都符合预期,但是,_my_form_foo_widget块本身也包含在输出中,即:
<div class="input-append">
    <span class="add-on">%</span>
</div>

<form>
    <div>
        <label for="my_form_foo">Bar</label>
        <div class="input-append">
            <input type="text" id="my_form_foo" name="my_form[foo]">
            <span class="add-on">%</span>
        </div>
    </div>
    <div>
        <label for="my_form_bar">Foo</label>
        <input type="text" id="my_form_bar" name="my_form[bar]">
    </div>
</form>

我一生都无法弄清楚我做错了什么。作为一种解决方法,我只是将块包装在 HTML 注释中。

我在 Symfony 2.4.1 和 Twig 1.15.0 上。

最佳答案

您正在体验 twig的预期行为。

如果您不是 ,则会在当前模板中直接呈现新定义的块延伸 另一个模板。

例子:
template_A.html.twig :

  • 有一个主体(=块外的代码)=>块直接渲染

  • <html>
    <body>
    {% block content -%}
    Foo
    {%- endblock -%} 
    
    Bar
    
    {%- block more_content -%}
    Foo
    {%- endblock %}
    </body>
    </html>
    

    => 输出:FooBarFoo (模板+主体中存在的所有块都被渲染)

    例子:
    template_B.html.twig :
  • 扩展模板不允许有主体
  • 只会渲染 template_A.html.twig 中存在的块

  • {% extends 'templateA.html.twig' %} 
    
    {% block content -%}
    Bar
    {%- endblock %}
    
    {% block not_in_template_a %}
    Some String
    {% endblock %}
    

    => 输出:BarBarFoo (但 不是 渲染 Some String 因为块 not_in_template_a 不存在于原始模板中)

    关于symfony - Twig form_theme _self 自定义单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21422038/

    相关文章:

    php - Symfony2 assets 按文件版本控制

    symfony - Twig/Symfony 2 中 "default"过滤器和 bool 宏参数的错误?

    javascript - Twig:评论在 {% javascripts %}

    doctrine-orm - 上下文错误异常 : Undefined Index when using composite key for doctrine associations with Symfony 3 entities

    mysql - 学说复杂实体

    php - 如何自定义 Sylius 以销售免费产品(默认最低价格为 0.01)

    php - 多对多实体选择查询 Doctrine

    php - 如何停止或摆脱 Twig 循环?

    Symfony2 1 :M/1:1 Relationship and Sonata Admin Form

    php - Symfony2 将变量从自己的包传递到 Twig