我正在编写一个Bundle来主题我们正在开发的网站。其他Bundles通过Twig调用Core bundle进行模板化,这个Themeing包就会扭曲该核心包。
我通过在主题包类中实现getParent()方法来返回核心包的名称,从而导致Symfony2在查看Core包之前查看主题包(基本上是ANY文件)。
现在,这在开发模式下运行良好,但是,当我在生产模式下尝试并且我的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 dirs的网站显示:
$ ls web/css
55d26a0.css f996955.css
$ ls web/js
f307b3f.js
缺少的JS文件很可能是由于另一个未使用的bundle。主要问题是,模板正在寻找:
<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 %}
在Base模板中声明为:
{# 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()包含在注释标记中的原因。完全删除该行没有帮助。
答案 0 :(得分:0)
在彻底清除缓存并重建后,删除parent()
确实有所帮助。
我将很快在这里制作一张错误机票,因为某些原因parent()
内部有{# ... #}
正在打破这一代,即使{# ... #}
内部没有任何内容由模板编译器解析,甚至考虑。
棘手的错误。