Symfony 2附加了Javascripts,只有一个请求

时间:2012-01-23 07:58:24

标签: php javascript symfony twig

我有一个layout.html.twig:

    {% block js %}
        {% javascripts 
            'Resources/public/js/jquery/jquery-1.7.1.min.js' 
            'Resources/public/js/jquery/jquery.namespace.js' 
            %}
            <script src="{{ asset_url }}" type="text/javascript"></script>
        {% endjavascripts %}
    {% endblock %}

我有

的index.html.twig
{% extends "MichaelMikeBundle::layout.html.twig" %}
{% block js %}
    {{ parent() }}
    {% javascripts 
        '@MichaelStoreBundle/Resources/public/js/index.js' 
        'Resources/public/js/jqueryui/jquery.ui.core.js'
        'Resources/public/js/jqueryui/jquery.ui.widget.js'
        'Resources/public/js/jqueryui/jquery.ui.button.js'
    %}
    <script src="{{ asset_url }}" type="text/javascript"></script>
    {% endjavascripts %}
{% endblock %}

我的生产模式页面返回两个js文件(两个请求)。 Symfony2将布局和输出中的两个文件合并为一个请求,它对索引也是如此 - 它将4个文件和输出合并为另一个请求。

我的问题是:是否可以在我的示例中输出布局和索引文件将所有js作为一个请求输出?或者至少将索引文件中的javascripts附加到布局中...

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

对于在树枝中插入js文件,我写道:

{% block javascripts %}
    {{parent()}}    

    <script src="{{ asset('public/js/userprofile.js') }}" type="text/javascript"></script>  

{% endblock %}

public位于Symfony / web /目录中。

这就是你想要的吗?

答案 1 :(得分:3)

您必须删除对{{ parent() }}的调用,将父资产定义复制到模板,然后在那里添加更多输入。

{% extends "MichaelMikeBundle::layout.html.twig" %}
{% block js %}
    {% javascripts 
        'Resources/public/js/jquery/jquery-1.7.1.min.js' 
        'Resources/public/js/jquery/jquery.namespace.js' 
        '@MichaelStoreBundle/Resources/public/js/index.js' 
        'Resources/public/js/jqueryui/jquery.ui.core.js'
        'Resources/public/js/jqueryui/jquery.ui.widget.js'
        'Resources/public/js/jqueryui/jquery.ui.button.js'
    %}
    <script src="{{ asset_url }}" type="text/javascript"></script>
    {% endjavascripts %}
{% endblock %}

没有更好的支持,因为这不是一个好习惯。首次呈现布局时,用户已经下载了前两个条目。设置远期到期的标头比将这些Javascripts合并到子模板更有意义。