枝条支持孙子继承吗?

时间:2016-08-02 00:07:21

标签: php twig

我的网络应用程序结构如下:

  • master.html(包含页面的主布局)
  • page.html(包含单个页面的内容)
  • child.html(包含一些可能加载或未加载的数据)

我在child.html中有javascript,需要在master.html的jQuery链接下面。 Twig是否有这样的标签?

用示例输出示例澄清:

<!DOCTYPE html>
<html>
    <head>
    ...
    </head>
    <body>
        <!-- Content of page.html, which has content from child.html within it -->

        <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
        <!-- Scripts from child.html -->
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

您可以在master.html模板中创建广告模块,然后可以在page.html中覆盖这些广告资源,例如child.html

master.html

<!DOCTYPE html>
<html>
    <head>
        <title>{{ title | default('Hello World') }}</title>
        <link rel="stylesheet" type="text/css" href="theme.css">
        {% block css %}
        {% endblock %}
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        {% block javascript_sources %}
        {% endblock %}
    </head>
    <body>
        <script>
           //default code
        </script>
    </body>
</html>

page.html中

{% extends "master.html" %}
{% block javascript_sources %}
    <script src="my.jquery.plugin.min.js"></script>
{% endblock %}
{% block javascript %}
     <script>
         $(function(){
            console.log('-- page loaded --');
         });
     </script>
 {% endblock %}    

child.html

{% extends "page.html" %}
{% block javascript %}
    {{ parent() }}
    <script>
        $(function(){
            console.log('-- child loaded --');
        });
    </script>
{% endblock %}

答案 1 :(得分:0)

好的,对于那些在以后偶然发现这篇文章的人来说,这就是我最终要做的事情:

  • 将所有必要的javascript外包给另一个名为child.js的文件。
  • 在确定是否加载child.html的相同条件中,将child.js加载到变量中。
  • 使用twig变量将PHP中的$js转换为twig中的{{ js }}。 (请务必使用{{ js|raw }}以避免转义它)在page.html文件中使用此变量。
  • 如果未加载child.html,则$js包含空字符串。