web-dev-qa-db-ja.com

含まれているTwigテンプレートから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を含めたいと思いますが、HTMLとJSのベストプラクティスを維持するために、それを確立されたJavaScriptブロックに追加します。

これを行うきれいな方法はありますか?私はSymfony2を使用しており、シングルトンなどを使用した解決策を一緒に作成する可能性がありますが、使用可能な方法がある場合は、よりクリーンな方法を使用します。

13
Andrew Stirling

私はパーティーに少し遅れていることを知っていますが、Twig 1.2を使用すると、 se タグと block 関数を使用できます:

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'
18
Daniel Hepper