【问题标题】:Symfony Assetic wrong resource typeSymfony Assetic 资源类型错误
【发布时间】:2013-02-19 17:53:54
【问题描述】:

我对 symfony 2 有一个奇怪的问题。我正在开发一个项目,该项目的所有样式表和 javascript 文件都加载了资产(路径/到/文件),我决定将资产与 cssrewrite 和 yui_compressor 一起使用,所以我添加了他们是这样的:

// this is just one file for example
{% stylesheets
    'bundles/mybundle/css/main.css'
    filter='?cssrewrite, ?yui_css'
%}

现在一切都在 prod 环境中完美运行,但问题出在开发环境中。文件链接正确,我可以打开文件,但资源类型实际上是 text/html 而不是 text/css,即使类型设置为 text/css,如下所示:

<link rel="stylesheet" type="text/css" href="/app_dev.php/css/ab72c13_main_1.css"/>

什么会导致这个奇怪的问题?

【问题讨论】:

  • “资源类型实际上是 text/html 而不是 text/css”是什么意思。你从哪里得到这些信息?另外,请注意,在过滤器前面使用? 会告诉 Assetic 不要处理它们,因此这不太可能是 Assetic 问题 (symfony.com/doc/current/cookbook/assetic/…)。
  • 我知道,但在我使用资产之前,这个问题并不存在,所以我认为它是资产。我注意到css文件根本没有应用,所以我检查了chrome的调试工具栏(或任何被调用的东西),我看到资源的类型是text/html
  • 好的,这很有道理。你能告诉我们你的树枝模板中完整的{% stylesheets %}吗?
  • 只是这个和另一个文件,因为我想一个一个地添加它们......两个文件的行为相同
  • 如果你让 cssrewrite 过滤掉它前面的 ? 甚至在 dev 中呢?

标签: html css apache symfony


【解决方案1】:

在@cordoval 的帮助下,我终于找到了问题所在。

我有两个配置资产的文件:use_controller,其中一个用 true 覆盖另一个。

所以解决这个问题的方法是设置assetic: use_controller : false 并使用assetic:dump --watch 自动转储assetic,以防你不想每次修改css/js文件时都这样做。

【讨论】:

  • 我有 use_controller : false 并且它仍然获取错误的 mimetype。
【解决方案2】:

尝试删除 yui_css 过滤器并单独测试另一个。

【讨论】:

  • 我试过了,在做缓存之后:清除和资产:转储是一样的
  • 抱歉,您只能在 prod 中启用它们,所以这无关紧要。 assetic:dump 也不是必需的,因为您通过 dev 中的控制器提供服务。
  • 我没有使用控制器
  • 您粘贴的
  • 是的&lt;link rel="stylesheet" type="text/css" href="{{ asset_url }}"/&gt;
【解决方案3】:

检查您的security.yml 并确保 所有 角色都可以访问 css 文件

access_control:
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2013-11-12
    • 1970-01-01
    • 2020-06-08
    • 2017-11-09
    • 2017-10-25
    相关资源
    最近更新 更多