symfony 中自定义表单主题内的可重用块

Reuseable blocks inside of custom form themes in symfony

我想在覆盖的主题块中调用自定义块:

{% block file_widget %}
    {% if image is not null %}
        {{ block('imagePreview') }}
    {% endif %}

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

{% block imagePreview %}
    <img src="{{ image.getFullPath | imagine_filter('medium_square') }}"
         alt="{{ image.filename }}"/>
{% endblock %}

未显示imagePreview。 但是当我不使用块时它正在工作。 当我不使用 FormTypeExtension 而是创建 ImageType 时,它​​也能正常工作。

所以我猜 file_widget 块仍然具有父 form_div_layout.html.twig 的范围,实际上 imagePreview 块不存在。

那我该如何解决呢。

我的意思是现在我通过删除块解决了它。

但我只想知道是否有人对此有解决方案。 也许有一种方法可以在 symfony 的自定义表单主题中使用可重用块?

终于找到了解决办法:

我只是没有 'use' 显式基本模板。 表单主题在没有这个的情况下工作 - 因为当 symfony 在新主题文件中找不到块时,它会回退到基本表单主题。

但似乎您也不能在这个新主题文件中使用自定义块。

现在可以使用了:

{% use 'form_div_layout.html.twig' %}

{% block file_widget %}
    {% if image is not null %}
        {{ block('imagePreview') }}
    {% endif %}

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

{% block imagePreview %}
    <img src="{{ image.getFullPath | imagine_filter('medium_square') }}"
         alt="{{ image.filename }}"/>
{% endblock %}