2016-02-27 5 views
4

Можно ли использовать assetic с наследованием? С кодом ниже я получаю эту ошибку:.Assetic and template inheritance

Исключение было брошено во время рендеринга шаблона ("Не удалось сгенерировать 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 %} 
+0

Вы пытались дополнить полный путь для активов? например 'bundles/app/js/jquery.owl.min.js'? – b3da

+0

У меня такая же проблема, и я просто нашел этот вопрос. Любая идея, как это решить? Я сделал точно, как сделал OP и получил аналогичную ошибку. –

ответ

2

Да, вы можете использовать наследование с Twig, и нет ничего по своей сути неправильно с тем, что вы пытаетесь сделать в своем коде. Я попытался бы полностью очистить кеш и загрузить страницу еще раз, и убедиться, что все активы, которые вы пытаетесь загрузить правильно, существуют.

+0

Нет изменений и активов (которые работают с простой функцией() в веточке. – Jerome

+0

Являются ли ваши javascripts в связках? Вы можете ссылаться на них с помощью нотации @BundleName (например: '@AppBundle/Resources/public/js/jquery.owl .min.js') –

+0

Проблема заключается только в статическом контенте (в приложении/Resources/static/apage.html.twig), все активы доступны в веб-папке. – Jerome

1

Я считаю, что это не работает так, как мы хотели, но я обнаружил named assets

Вы называете все ваши активы родительского шаблона в файле конфигурации

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

А затем включить имя jquery_and_ui всего дети, наряду с любыми другими активами:

{% javascripts 
    '@jquery_and_ui' 
    '@AppBundle/Resources/public/js/*' %} 
    <script src="{{ asset_url }}"></script> 
{% endjavascripts %} 

Это, очевидно, хлопот сделать, но я не могу найти простой способ сделайте это и не поймите, почему он не генерирует родительские шаблонные активы.

EDIT

Вы случайно с помощью LiipThemeBundle? This может решить проблему:

# app/config/config.yml 
liip_theme: 
    # ... 
    assetic_integration: true 
+0

Пока вы используете аннотацию @BundleName, вы должны иметь возможность ссылаться без именованных активов. –

0

Это должно работать нормально. Расширение блочных javascripts также подходит для активов.

На самом деле такое сообщение

Невозможно сгенерировать URL для указанного маршрута «_assetic_41351d9» как такого маршрута не существует

говорит о устаревшом кэше. Вы это поняли? Это помогло мне.

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

Надеется, что это имеет смысл.