0

開発中のサイトをテーマにするためのバンドルを作成しています。他のバンドルは、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() をコメント タグで囲んでいます。行を完全に削除しても役に立ちません。

4

1 に答える 1

0

parent()キャッシュを完全にクリアして再構築した後、削除は役に立ちました。

何らかの理由でparent()コメント ( {# ... #}) 内にあると生成が壊れてい{# ... #}たため、テンプレート コンパイラによって解析または考慮されるべきものは何もありません。

トリッキーなバグ。

于 2013-02-19T18:26:00.857 に答える