2012-10-02 44 views
10

Estoy buscando averiguar si hay una manera limpia de agregar JS y CSS de las plantillas incluidas.Agregar JS y CSS limpiamente de las plantillas Twig incluidas

Así, por ejemplo, si tiene base.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 %} 

Y en la página genérica paquete me gustaría incluir un poco más de Javascript pero añadirlo al bloque Javascript establecida para mantener a Mejores prácticas de HTML y JS.

¿Hay una manera limpia de hacer esto? Estoy usando Symfony2, y probablemente podría resolver una solución usando Singletons y tal, pero prefiero un método más limpio si hay uno disponible.

Respuesta

16

Yo sé que soy un poco tarde a la fiesta, pero con la ramita 1.2, puede utilizar la etiqueta use y la función block:

GenericBundle: Genérico: page.html.twig

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

base.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

debe poner comillas en {{blo ck ('page_javascript')}} para que esto funcione, de lo contrario obtendrá un mensaje de error "Variable ... no existe ..." –

+0

@VincentPazeller tiene razón, lo corrigió –

+0

{% include ... with {javascripts : block ('javascripts')}%} funcionó bien para mí. – webDEVILopers

Cuestiones relacionadas