2012-10-02 145 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