我在同一个文件夹中有两个CSS文件,具有相同的访问权限。在同一个Twig文件中进行测试时,一个CSS文件会生成一个文件的URL并完全加载,并且会出错。
在渲染模板期间抛出了异常 (“无法生成指定路由的URL”_assetic_a328b4c_0“as 这种路线不存在。“)在@ GutensiteStream / Stream35163.html.twig中 在第19行。
ls -al /var/www/core/cms/src/Templates/GutensiteAdminBundle/Resources/public/css
-rw-rw-r-- 1 chadwick developer 17K Feb 7 14:00 dashboard.css
-rw-rw-r-- 1 chadwick developer 49K Feb 6 16:00 site.css
{% stylesheets '@TemplatesGutensiteAdminBundle/Resources/public/css/site.css' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}
{% stylesheets '@TemplatesGutensiteAdminBundle/Resources/public/css/dashboard.css' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}
<link rel="stylesheet" href="/gutensite/v/2/0/bundles/templatesgutensiteadmin/css/dashboard.css">
我已经多次通过app/console cache:clear
和rm -rf app/cache/*
清除了缓存。我使用php app/console assets:install --symlink /var/www/core/web/gutensite/v/2/0/
将公共文件符号链接到包,当然它们是可访问的(通过直接链接演示)。
assetic:
#don't use dynamic links to assets, use full production paths
use_controller: false
答案 0 :(得分:2)
当我遇到这个错误时,解决方案非常简单:
如有疑问:
bin/console cache:clear
寻找Assetic并不存在的缓存版本。这可能有多种原因,但cache:clear
似乎应该是第一站。
答案 1 :(得分:1)
建议不要在生产中直接使用@helper和load css加载css。
最佳实践方法是将css文件存储在app / Resources目录中,并使用assets:install
从Web根目录请求它们,但是因为你没有AppBundle,这是第二个最好的事情将是从web / bundles目录中请求它们:
{% stylesheets
'bundles/templategutenstideadmin/css/site.css'
'bundles/templategutenstideadmin/css/dashboard.css'
%}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}
请务必事先运行assets:install
。
这样,您的css文件将被压缩为一个文件,并且将使用assets:install
命令加载最新的更改。
建议不要在本地测试之外使用@直接从您的软件包加载css文件。我怀疑你的第一个问题是在资产中使用多个样式表标签(样式表标签不是Twig的一部分),但通常使用@进行文件链接对资产来说不是一个好主意。在.yml文件中使用它来处理路由和配置,但不能用于资产! :)
答案 2 :(得分:0)
发生此错误的一个实例是当您尝试在子模板中加载此类资产时,该模板已在其中一个父模板中加载。
要修复此问题,请在模板链中仅加载一次资产。
(必须将此作为答案发布,因为我无法发表评论。)
答案 3 :(得分:0)
config.yml
assetic:
bundles: [you bundle name , otherbundlename] #add this