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

时间:2015-02-07 23:25:53

标签: symfony assetic

我在同一个文件夹中有两个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

带有加载

的CSS的模板
{% stylesheets '@TemplatesGutensiteAdminBundle/Resources/public/css/site.css' %}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

带有不加载

的CSS的模板
{% 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:clearrm -rf app/cache/*清除了缓存。我使用php app/console assets:install --symlink /var/www/core/web/gutensite/v/2/0/将公共文件符号链接到包,当然它们是可访问的(通过直接链接演示)。

我的Config.yml

assetic:
    #don't use dynamic links to assets, use full production paths
    use_controller: false

4 个答案:

答案 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