如何使用Symfony2将JavaScript文件包含到twig模板中

时间:2015-08-23 19:45:51

标签: javascript symfony twig

我可以轻松地将CSS文件包含到我的twig模板中,如下所示:

{% block stylesheets %}
    <link rel="stylesheet" href="{{ asset('bundles/user/css/bootstrap.min.css') }}"/>
    <link rel="stylesheet" href="{{ asset('bundles/user/css/bootstrap-theme.min.css') }}"/>
    <link rel="stylesheet" href="{{ asset('bundles/user/css/main.css') }}"/>
{% endblock %}

但对于我的JavaScript文件

{% block javascripts %}
    <script src="{{ asset('bundles/user/js/jquery-1.11.3.min.js') }}"></script>
    <script src="{{ asset('bundles/user/js/bootstrap.min.js') }}"></script>
{% endblock %}

这种方法不起作用。我也尝试使用assetics,但这也不起作用。

1 个答案:

答案 0 :(得分:12)

我推荐使用Assetic方法。这并不简单,但它给你带来了巨大的好处。

首先,将JS嵌入到这样的模板中:

{% block my_javascripts %}
    {% javascripts
        '@FooBarBundle/Resources/public/js/foo.js'
        '@FooBarBundle/Resources/public/js/bar.js'

        filter='?uglifyjs2'
    %}
    <script src="{{ asset_url }}" type="text/javascript"></script>
    {% endjavascripts %}
{% endblock %}

添加任意数量的JS文件。

现在在命令行上运行以下命令:

app/console assetic:dump

dev环境中,这将在文档根目录中生成JS文件的副本。在prod中,这将在doc根目录中生成一个组合文件 - 第一个好处。

要在编辑文件时在后台自动生成文件,请从命令行运行以下命令,并保持运行直到完成为止(然后使用 Ctrl + C 取消):

app/console assetic:watch --force

--force选项会导致Assetic生成文件,即使它们似乎没有任何修改。)

另一个好处是filter='uglifyjs2'语句:它导致文件被UgilifyJS“压缩”,加载速度更快。

Read more about using Assetic for JS and CSS in Symfony2 in the cookbook.