如何在twig模板中动态导出带有资产的内联javascript?

时间:2014-04-01 13:57:04

标签: javascript symfony twig inline assetic

我正在尝试在Symfony2项目中清理我的html输出。真正困扰我的是我真的不知道如何动态导出内联JS。例如:我需要初始化Jquery数据表,但不是在每个页面上,大多数页面都有自己的特定内联js。我正在寻找一种方法,用我的js片段扩展一个twig块,它被组合在一起,并由外部(虚拟).js文件中的资产加载。

1 个答案:

答案 0 :(得分:0)

是的,您需要使用模板继承并拥有父javascript / jquery块。 Jquery与javascript相同,因此您可以将其包含在一个块中或单独使用。如果使用变量,则将该变量传递给基本jquery部分。对于不同的页面,您需要扩展基本树枝文件,并通过包含父级或完全覆盖它来添加到javascript块。

base twig文件具有js和css块的基本html布局:

<!DOCTYPE html>
<html>
    <head>
        {% block head %}
            <link rel="stylesheet" href="style.css" />
            <title>{% block title %}{% endblock %} - My Webpage</title>
        {% endblock %}
        {% block js %}
            <script src="{{ asset('js/main.js') }}"></script>
        {% endblock %}

    </head>
    <body>
        <div id="content">{% block content %}{% endblock %}</div>
        <div id="footer">
            {% block footer %}
                &copy; Copyright 2011 by <a href="http://domain.invalid/">you</a>.
            {% endblock %}
        </div>
    </body>
</html>

这是由子页继承的

{% extends "base.html" %}

{% block title %}Index{% endblock %}
{% block js%}
    {{ parent() }}
    <script src="jquery.plugin.js"></script>
{% endblock %}
{% block content %}
    <h1>Index</h1>
    <p class="important">
        Welcome on my awesome homepage.
    </p>
{% endblock %}