Adicionando JS e CSS de forma limpa a partir de modelos Twig incluídos
Pergunta
Estou procurando descobrir se existe uma maneira limpa de adicionar JS e CSS a partir de modelos incluídos.
Então, por exemplo, se layout.html.twig tiver:
{% 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 %}
E na página do pacote genérico eu gostaria de incluir mais Javascript, mas adicioná-lo ao bloco Javascript estabelecido para manter as práticas recomendadas de HTML e JS.
Existe uma maneira limpa de fazer isso?Estou usando o Symfony2 e provavelmente poderia encontrar uma solução usando Singletons e coisas assim, mas prefiro um método mais limpo, se houver um disponível.
Solução
Eu sei que estou um pouco atrasado para a festa, mas com o Twig 1.2, você pode utilizar o usar etiqueta e o bloquear função:
GenericBundle:Generic: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'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow