Symfony无法生成路由到样式表的URL

Symfony无法生成路由到样式表的URL,symfony,assetic,Symfony,Assetic,我在同一个文件夹中有两个CSS文件,具有相同的访问权限。在同一个细枝文件中进行测试时,一个CSS文件会生成指向该文件的URL并完全加载,而另一个则会给出一个错误 错误 在呈现模板期间引发了异常 (“无法为命名路由生成URL”\u assetic\u a328b4c\u 0“作为 @GutensiteStream/Stream35163.html.twig中不存在此路由。“) 在第19行 服务器上的文件 使用CSS加载的模板 不建议在生产环境中使用@helper并直接从包中加载css 最佳实践方法

我在同一个文件夹中有两个CSS文件,具有相同的访问权限。在同一个细枝文件中进行测试时,一个CSS文件会生成指向该文件的URL并完全加载,而另一个则会给出一个错误

错误 在呈现模板期间引发了异常 (“无法为命名路由生成URL”\u assetic\u a328b4c\u 0“作为 @GutensiteStream/Stream35163.html.twig中不存在此路由。“) 在第19行

服务器上的文件 使用CSS加载的模板
不建议在生产环境中使用@helper并直接从包中加载css

最佳实践方法是将css文件存储在app/Resources目录中,并使用
assets:install
从web根目录请求css文件,但由于没有AppBundle,第二个最佳方法是从web/bundles目录请求css文件:

    {% stylesheets
    'bundles/templategutenstideadmin/css/site.css'
    'bundles/templategutenstideadmin/css/dashboard.css'
    %}
    <link rel="stylesheet" href="{{ asset_url }}">
    {% endstylesheets %}
{%样式表
'bundles/templategutenstideadmin/css/site.css'
'bundles/templategutenstideadmin/css/dashboard.css'
%}
{%endstylesheets%}
确保事先运行
assets:install
。 这样,您的css文件将被压缩为一个文件,并将加载来自
assets:install
命令的最新更改


在本地测试之外,不建议使用@直接从捆绑包加载css文件。我怀疑您的第一个问题是在assetic中使用多样式表标记(样式表标记不是Twig的一部分),但通常使用@for文件链接对于资产来说不是一个好主意。将其用于.yml文件中的路由和配置之类的内容,但不用于资产!:)

出现此错误的一个实例是,当您尝试在子模板中加载此类资产时,该子模板已加载到父模板中

要修复此问题,请在模板链中仅加载资源一次

(必须将此作为答案发布,因为我还不能发表评论。)

config.yml

assetic:
    bundles: [you bundle name , otherbundlename]  #add this

当我遇到这个错误时,解决方法非常简单:

如有疑问:

bin/console cache:clear

Assetic将查找不存在的缓存版本。这可能有很多原因,但是
cache:clear
似乎应该是第一站。

请尝试
@templatesgtenesiteadminbundle/Resources/public/css/*
好吧,我实际上不想加载该文件夹中的所有css。在本例中,我实际上并不需要site.css,这只是为了确认语法是否正确。我想要仪表板。css@不错。拥有一个包含一些捆绑包的项目并将所有css推送到应用程序/资源中是不好的。我确实使用@Bundle,它就像一个符咒。在dev中,我让assetic使用控制器,因此css和js的URL是已编译文件夹的路径,但资源不存在,因此它通过Symfony进行调度。当我切换到生产环境时,我会转储它们,并通过Apache访问它们,而不使用PHP。这就是我想要的。使用CSS的@syntax,但“在使用CSS样式表的@AppBundle语法时,有一个已知问题导致CSSRewite筛选器失败”。但不管怎样,我不明白的是为什么第一个文件会加载,但是如果我用第二个文件名替换文件名,它就不起作用了(每个测试只请求一个文件,这并不重要)。另外,为什么不应该对资产使用@语法?演示如何将其用于javascript、图像和CSS。那么,您为什么反对这种做法(除了CSS中带有重写过滤器的已知错误)背后的逻辑是什么呢。另外,仅供参考,我使用assets:install with symlinks,所以我不知道这是否会对部署产生影响。我想它不会像你提到的那样将文件压缩在一起。请提供更多详细信息。在我的示例中,我从相同的捆绑包和文件夹加载了两个文件。因此,请解释为什么这是必要的,以及它的作用。谢谢。虽然此代码可能会回答此问题,但提供有关此代码为什么和/或如何回答此问题的其他上下文可提高其长期价值。
<link rel="stylesheet" href="/gutensite/v/2/0/bundles/templatesgutensiteadmin/css/dashboard.css">
assetic:
    #don't use dynamic links to assets, use full production paths
    use_controller: false
    {% stylesheets
    'bundles/templategutenstideadmin/css/site.css'
    'bundles/templategutenstideadmin/css/dashboard.css'
    %}
    <link rel="stylesheet" href="{{ asset_url }}">
    {% endstylesheets %}
assetic:
    bundles: [you bundle name , otherbundlename]  #add this
bin/console cache:clear