2012-10-02 146 views
10

干净添加JS和CSS我期待,以找出是否有一个干净的方式从包括模板添加JS和CSS。从包括枝条模板

因此,举例来说,如果layout.html.twig有:

{% include 'GenericBundle:Generic:page.html.twig' with {'data': data} %} 
... 
{% block javascript %} 

    {% javascripts 
     '@GenericBundle/Resources/public/js/app/jquery/jquery.min.js' 
     '@GenericBundle/Resources/public/js/lib/bootstrap/bootstrap.min.js' 
    %} 
     <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

{% endblock %} 

而在通用包页,我想包括一些更多的JavaScript,但它添加到既定的Javascript块,以保持到HTML和JS最佳实践。

有没有干净的方式做到这一点?我使用Symfony2中,并很可能cludge一起使用单身和这样的解决方案,但我宁愿一个更清洁的方法,如果有一个可用。

回答

16

我知道我有点迟到了,但枝条1.2,你可以利用use标签和block功能:

GenericBundle:通用:page.html.twig

{% block javascripts %} 
    <script src="..."></script> 
{% endblock %} 
{% block included_content %} 
    Bar 
{% endblock %} 

layout.html.twig

{% use 'GenericBundle:Generic:page.html.twig' with javascripts as page_javascripts %} 

{% block javascript %} 

    {% javascripts 
     '@GenericBundle/Resources/public/js/app/jquery/jquery.min.js' 
     '@GenericBundle/Resources/public/js/lib/bootstrap/bootstrap.min.js' 
    %} 
     <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 
    {{ block('page_javascript') }} // Don't forget the 'braces' 

{% endblock %} 

... 
{{ block('included_content') }} // Don't forget the 'braces' 
+1

你必须用引号在{{BLO CK(“page_javascript”)}}这个工作,否则你会得到一个“变量...不存在...”错误消息 –

+0

@VincentPazeller你是对的,固定的, –

+0

{%...包括与JavaScript的{ :block('javascripts')}%}对我来说工作得很好。 – webDEVILopers