我有以下树枝模板:
{# layout.twig #}
{% block content %}
THIS IS LAYOUT
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
{# secondary_layout.twig #}
{% extends layout.twig %}
{% block content %}
THIS IS SECONDARY_LAYOUT
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
{# mypage.twig #}
{% extends secondary_layout.twig %}
{% block content %}
{# I WOULD LIKE TO USE layout content block here #}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我可以在mypage.twig的内容块内调用parent(),但是如何使用祖父母呢?
在某些情况下,您可以实现这一目标。不幸的是,您的情况并非如此。但是,如果仅使用“水平重用”(use关键字),而不使用继承(extends),则该方法有效。例如,这适用于表单主题。
在我的情况下,我定义了一个表单主题,该主题继承自bootstrap 3表单主题。引导程序主题本身继承自“ form_div_layout”。我想覆盖选择小部件,并包括其祖父母的(form_div_layout)块内容,因为在这种情况下,该块的引导版本不适合我。因此,基本上是一个非常相似的问题。
这可以通过从父级(bootstrap_3_layout)和大级父级布局(form_div_layout)继承来解决,同时声明要覆盖的大级父级块的别名:
{# my_form_theme.html.twig #}
{% use 'form_div_layout.html.twig' with choice_widget_collapsed as base_choice_widget_collapsed %}
{% use 'bootstrap_3_layout.html.twig' %}
{% block choice_widget_collapsed -%}
{# There is no "grandparent()" function, so instead we can do this: #}
{{- block('base_choice_widget_collapsed') -}}
{%- endblock %}
Run Code Online (Sandbox Code Playgroud)
我正在写这个答案,尽管它没有回答实际的问题。但是当谷歌搜索这种“祖父母”功能时,其他人也可能会发现这个问题,并且当他们读到这里是不可能的时,也许他们会不必要地放弃。
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |