【问题标题】:Adding JS and CSS cleanly from included Twig templates从包含的 Twig 模板中干净地添加 JS 和 CSS
【发布时间】:2012-09-22 20:59:05
【问题描述】:

我正在寻找是否有一种干净的方法可以从包含的模板中添加 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,可能会使用 Singletons 之类的解决方案组合在一起,但如果有可用的方法,我宁愿使用更清洁的方法。

【问题讨论】:

    标签: symfony twig assetic


    【解决方案1】:

    我知道我参加聚会有点晚了,但是在 Twig 1.2 中,您可以使用 use 标签和 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'
    

    【讨论】:

    • 您必须在 {{ block('page_javascript') }} 中加上引号才能使其正常工作,否则您会收到“变量...不存在...”错误消息
    • {% include ... with { javascripts: block('javascripts') } %} 对我来说很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2018-04-06
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多