【问题标题】:Reuseable blocks inside of custom form themes in symfonysymfony 中自定义表单主题内的可重用块
【发布时间】:2021-08-29 07:03:53
【问题描述】:

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

{% 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_widgetblock 仍然具有父form_div_layout.html.twig 的范围,实际上不存在imagePreview 块。

那我该如何解决呢。

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

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

【问题讨论】:

    标签: symfony twig symfony-forms


    【解决方案1】:

    终于找到了解决办法:

    我只是没有明确地“使用”基本模板。 没有这个表单主题也能正常工作——因为当 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 %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多