symfony - Twig - 将内联脚本从包含的子模板冒泡到 javascripts block

标签 symfony include block twig

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

我尝试使用 block在包含的子模板中,并在 中定义的块中添加一些脚本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>

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

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

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

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

Twig 很好地编译模板,但在 DOM 中的小部件之后渲染脚本而不是渲染它来代替 {% block widgetInlineScript %}在页面的末尾。

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

最佳答案

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

Append content to block from multiple subtemplates

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

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

您可以在此处查看文档:

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

关于symfony - Twig - 将内联脚本从包含的子模板冒泡到 javascripts block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17817916/

相关文章:

c - 使用大量 C 代码块会影响性能吗?

php - 在login_check中返回Json

c++ - 可以使用 C 预处理器来判断文件是否存在吗?

ruby-on-rails - 在这部分代码中设置 klass = self 的动机是什么

php - 根据页面名称添加类元素

c++ - #在 C 中包含 iostream?

asp.net - 如何允许已知的网络爬虫并阻止垃圾邮件发送者和有害机器人扫描 asp.net 网站

php - 如何在 Symfony2 中设置默认值,以便自动 CRUD 生成的表单不需要这些字段?

symfony - Mink 不适用于 behat 3.0.12

php - 在 Symfony kernel.controller 事件中,ControllerEvent::getController() 的返回类型是什么?