资产和模板继承

时间:2016-02-27 18:10:23

标签: symfony twig assetic

这可以使用带有继承的资产吗?使用下面的代码我得到这个错误:

  

在呈现模板期间抛出异常(“无法生成指定路由的URL”_assetic_41351d9“,因为此类路由不存在。

我的应用布局:

{# app/Resources/views/layout.html.twig 
{% block javascripts %}
    {% javascripts
        'assets/js/jquery-2.2.0.min.js'
        'assets/js/main.js'
        output='assets/compiled/app.js'
    %}
    <script src="{{ asset_url }}"></script>
    {%  endjavascripts %}
{% endblock %}

我的孩子布局:

{% extends "::layout.html.twig" %}
...
{% block javascripts %}
    {{  parent() }}

    {% javascripts
        'assets/js/jquery.owl.min.js'
        output='assets/compiled/page.js'
    %}
    <script src="{{ asset_url }}"></script>
    {%  endjavascripts %}
{% endblock %}

4 个答案:

答案 0 :(得分:2)

是的,您可以在Twig中使用继承,并且在您的代码中尝试执行的操作没有任何内在错误。我会尝试完全清除缓存并再次加载页面,并确保您尝试正确加载的所有资产都存在。

答案 1 :(得分:1)

我认为它不按我们想要的方式工作,但我发现了named assets

您在配置文件中命名所有父模板资产

pom.xml

然后在所有孩子中加上pom.xml名称以及任何其他资产:

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>X.X.X.X</version>
</dependency>

这显然很麻烦,但我找不到这样做的简单方法,也不明白为什么它不会生成父模板资产。

修改

你是否有机会使用LiipThemeBundle? This可以解决问题:

assetic:
assets:
    jquery_and_ui:
        inputs:
            - '@AppBundle/Resources/public/js/thirdparty/jquery.js'
            - '@AppBundle/Resources/public/js/thirdparty/jquery.ui.js'

答案 2 :(得分:0)

这应该可以正常工作。扩展块javascripts也适用于资产。

其实这样的消息

  

无法为指定路由“_assetic_41351d9”生成URL   这种路线不存在

说过时缓存。你清楚了吗?这对我有所帮助。

php app/console cache:clear --env=dev

希望它有意义。

答案 3 :(得分:0)

在我的情况下,错误似乎是由于基本文件扩展名是.html.twig而导致的,而子文件只有.twig-将两个文件的扩展名更改为.html.twig解决了问题... / p>