4

我想在不同的页面中包含一个小部件,并且在此子模板中定义的相关脚本与其他脚本一起在页面末尾自动发生,而无需执行多个包含。

我尝试block在包含的子模板中使用 a 并在base.html.twig中定义的该块中添加一些脚本,以便这些脚本将在页面末尾加载。

base.html.twig我有

<html><body>
   <div>{% block content %}{% endblock %}</div>
   <aside>{% block aside %}{% endblock %}</aside>
   ...
   {% block javascripts %}
      <script src="..."></script>
      <script src="..."></script>
      ...
   {% endblock %}
   {% block widgetInlineScript %}{% endblock %}
</body></html>

我有一个 扩展base.html.twig的模板profile.html.twig看起来如此

{% extends '::base.html.twig' %}
{% block content %}
   ...
{% endblock %}
{% block aside %}{% include 'ApplicationRcBundle:include:promo/adSpace_topRight.html.twig' %}{% endblock %}

include/widget.html.twig 中我不能使用{% block javascripts %}{{ parent() }} ...,因为它本身并没有扩展任何东西,所以使用parent()失败。相反,我使用了一个特定的块。

{% block widgetInlineScript %}
<script type="text/javascript" id="widgetInlineScript" >
...
</script>
{% endblock %}

Twig 可以很好地编译模板,但在 DOM 中仅在小部件之后呈现脚本,而不是{% block widgetInlineScript %}在页面末尾呈现它。

那么是否可以block在包含的子模板中使用 a ?谢谢

4

1 回答 1

2

我今天回答了类似的问题:

附加内容以阻止多个子模板

基本上,我使用“水平重用”技术创建了块:

{% use "blocks.html" with sidebar as base_sidebar %}

你可以在这里查看文档:

http://twig.sensiolabs.org/doc/tags/use.html

于 2013-12-04T17:01:00.200 回答