開発中のサイトをテーマにするためのバンドルを作成しています。他のバンドルは、Twig を介してテンプレートを作成するためにコア バンドルを呼び出し、このテーマ バンドルはそのコア バンドルをワープします。
テーマ バンドル クラス内に getParent() メソッドを実装してコア バンドルの名前を返すことでこれを行いました。これにより、Symfony2 はコア バンドルを調べる前にテーマ バンドル (基本的にはすべてのファイル) を調べます。
現在、これは開発モードではうまく機能しますが、本番モードで試してみると、CSS/JS ファイルが 1 つに結合され、結果のパスが 404 ページに解決され、すべてのスタイルが失われます。
dev と production の両方rm -rf
のキャッシュをクリアし、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]
Web 向けの 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() をコメント タグで囲んでいます。行を完全に削除しても役に立ちません。