2012-10-02 1 views
10

Ich möchte herausfinden, ob es eine saubere Möglichkeit gibt, JS und CSS aus den mitgelieferten Vorlagen hinzuzufügen.JS und CSS sauber aus den mitgelieferten Twig-Vorlagen hinzufügen

So zum Beispiel, wenn layout.html.twig hat:

{% 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 %} 

Und in der generischen Bündel Seite würde Ich mag einige mehr Javascript einschließen, aber es zu dem etablierten Javascript-Block in dem zu halten Best Practices für HTML und JS

Gibt es einen sauberen Weg, dies zu tun? Ich benutze Symfony2 und könnte wahrscheinlich eine Lösung mit Singletons und ähnlichem kombinieren, aber ich würde lieber eine sauberere Methode verwenden, wenn es eine gibt.

Antwort

16

Ich weiß, ich bin ein wenig spät, um die Partei, aber mit Zweig 1.2, können Sie die use-Tag und die block Funktion nutzen:

GenericBundle: Allgemein: 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

Sie setzen müssen Anführungszeichen in {{blo ck ('page_javascript')}} damit dies funktioniert, sonst erhalten Sie eine "Variable ... ist nicht vorhanden ..." Fehlermeldung –

+0

@VincentPazeller Sie haben Recht, behoben –

+0

{% include ... mit {Javascripts : block ('javascripts')}%} hat gut für mich funktioniert. – webDEVILopers