Я пишу Bundle для темы сайта, который мы разрабатываем. Другие пакеты используют пакет Core для создания шаблонов через Twig, а этот пакет Themeing искажает этот основной пакет.
Я сделал это, реализовав метод getParent() внутри класса пакета темы, чтобы вернуть имя основного пакета, таким образом заставив Symfony2 искать в пакете темы (практически ЛЮБОЙ файл), прежде чем искать в пакете Core.
Теперь это прекрасно работает в режиме разработки, однако, когда я пробую в режиме производства, и мои файлы CSS/JS объединяются в один, результирующий путь разрешается на странице 404, и все стили теряются.
Я очистил кеш как dev, так и production, а также rm -rf
'd каталоги dev и prod. Вызов php app/console assetic:dump --env=prod --no-debug
возвращает:
$ php app/console assetic:dump --env=prod --no-debug
Dumping all prod assets.
Debug mode is off.
10:25:40 [file+] /webapps/xxxbundle/app/../web/css/f996955.css
10:25:46 [file+] /webapps/xxxbundle/app/../web/js/f307b3f.js
10:26:05 [file+] /webapps/xxxbundle/app/../web/css/55d26a0.css
10:26:05 [file+] /webapps/xxxbundle/app/../web/js/ccfc30e.js
[RuntimeException]
The source file "/webapps/xxxclient/app/../web/bundles/xxxbundle/js/modernizer.custom.96376.js"
does not exist.
assetic:dump [--watch] [--force] [--period="..."] [write_to]
Веб-каталоги css и js показывают:
$ ls web/css
55d26a0.css f996955.css
$ ls web/js
f307b3f.js
Отсутствующий файл JS, вероятно, связан с другим пакетом, который не используется. Основная проблема в том, что шаблон ищет:
<link rel="stylesheet" type="text/css" media="screen" href="/css/2a6fc23.css">
<script src="/js/adf6a7a.js"></script>
Ни того ни другого не существует. Есть идеи или направления?
[[ РЕДАКТИРОВАТЬ ]]
При дальнейшем рассмотрении, даже производственный кеш активов ссылается на эти файлы, но они никогда не создаются... почему? ....
[[ ШАБЛОНЫ ]]
(Перезаписанный шаблон)
{% extends 'FrontBundle:Frame:base.html.twig' %}
{% block title %}{{ page.title }}{% endblock %}
{% block wrapper %}
{# route: {{ route }} #}
{{ rendered | raw }}
{% endblock %}
(Перезапись шаблона)
{% extends 'SkinBundle::layout.html.twig' %}
{# Site Name #}
{% block site_name %}
{{ page.title }} | {{ parent() }}
{% endblock %}
Макет расширяет базовый шаблон, который представляет собой просто оболочку сайта, в процессе перезаписи допустим CSS, например:
{% extends 'FrontBundle:Frame:default.html.twig' %}
{# Stylesheets #}
{% block stylesheets %}
{# no execute {{ parent() }}#}
{% stylesheets
filter='cssrewrite'
'bundles/core/css/normalize.css'
'bundles/skin/css/main.css'
%}
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}">
{% endstylesheets %}
{% endblock %}
Который объявлен в базовом шаблоне как:
{# Stylesheets #}
{% block stylesheets %}
{% stylesheets
filter='cssrewrite'
'bundles/core/css/normalize.css'
'bundles/front/css/global.css'
'bundles/page/css/page.css'
%}
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}">
{% endstylesheets %}
<!-- Page -->
{% endblock %}
Эти таблицы стилей не нужны, поэтому у меня есть parent(), заключенный в теги комментариев. Полное удаление строки не помогает.