所以,我有3个模板:1.使用一些参数嵌入Widget,2.每页的全局布局,3.单页.
我想在Layout中使用Page来覆盖它,但是当我想将这个块放在Embed小部件中时,它就不起作用了.
file: Widget/awesome.html.twig (嵌入小部件)
<div id="{{id|default('awesomeWidget')}}">
{% block widget_body %}
{% endblock %}
</div>
Run Code Online (Sandbox Code Playgroud)
file: Layout/layout.html.twig
{% block layout_body %}
{% embed 'AcmeFoobarBundle:Widget:awesome.html.twig' with
{'id':'myAwesomeWidget'} only %}
{% block widget_body %}
{% block I_WANT_TO_OVERRIDE_THIS %}
{% endblock %}
{% endblock %}
{% endembed %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
file: Portal/page.html.twig
{% extends 'AcmeFoobarBundle:Layout:layout.html.twig' %}
{% block I_WANT_TO_OVERRIDE_THIS %}
Hello World
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这可能以某种方式做到这一点吗?
小智 16
你不能这样做.嵌入式工作包括include和extends,因此块I_WANT_TO_OVERRIDE_THIS实际上在你的'扩展'awesome.html.twig'中.页面扩展layout.html.twig不是很棒,所以page.html没有I_WANT_TO_OVERRIDE_THIS块
您应该考虑将其更改为您的窗口小部件的占位符,并将它们嵌入page.html.twig级别.
如果你真的需要这种方式,你最终可以这样做:在layout.html.twig中:
{% set overrideWidgetPart %}
{% block I_WANT_TO_OVERRIDE_THIS %}{% endblock %}
{% endset %}
{% block layout_body %}
{% embed 'AcmeFoobarBundle:Widget:awesome.html.twig' with
{'id':'myAwesomeWidget', overrideWidgetPart: overrideWidgetPart } only %}
{% block widget_body %}
{{ overrideWidgetPart }}
{% endblock %}
{% endembed %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6147 次 |
| 最近记录: |