0

对不起我的英语不好,我在 windows8 上使用 symfony2.3。当我尝试使用罗盘过滤器时,我得到错误输出:“您必须从项目目录编译单个样式表。”

这是我的资产配置:

assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ ]
    ruby: "C:/Ruby200-x64/bin/ruby.exe"
    #java: /usr/bin/java
    filters:
       cssrewrite: ~
       sass:
           bin: "C:/Ruby200-x64/bin/sass"
       compass:
           bin: "C:/Ruby200-x64/bin/compass"

这是视图:

{% stylesheets 'bundles/walcore/css/*' filter='compass' %}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

当我尝试使用 SASS 过滤器时,一切正常。

有人可以帮助我吗?

4

2 回答 2

2

我自己在尝试将我们的 SF2.2 项目迁移到 SF2.3 时遇到了这个问题,下面是 Assetic 的 CompassFilter 在 2.2 和 2.3 版本的 Assetic 包中执行的命令行的比较

SF 2.2.2 AsseticBundle 2.1.3

"C:\Ruby200\bin\ruby.exe" "C:\Ruby200\bin\compass" "编译" "C:\Users\Rick\AppData\Local\Temp" "--boring" "--images-dir " "D:/Projects/cw3sf2/app/../web/bundles/cwmain/images/" "--config" "C:\Users\Rick\AppData\Local\Temp\ass8DCC.tmp" "--sass -dir""""--css-dir""""C:/Users/Rick/AppData/Local/Temp/ass8DCD.tmp.scss"

SF 2.3 AsseticBundle 2.3.0

"C:\Ruby200\bin\ruby.exe" "C:\Ruby200\bin\compass" "编译" "C:\Users\Rick\AppData\Local\Temp" "--boring" "--images-dir " "D:/Projects/cw3sf2/app/../web/bundles/cwmain/images/" "--config" "C:\Users\Rick\AppData\Local\Temp\assD29B.tmp" "--sass -dir" "--css-dir" "C:/Users/Rick/AppData/Local/Temp/assD29C.tmp.scss"

您会注意到以前的 ProcessBuilder 通过使用 "" 为 --sass-dir 和 --css-dir 注入了空参数,而较新的 ProcessBuilder 没有。显然,这会导致 Compass 向您发送错误消息。

解决这个问题需要在 ProcessBuilder 中进行上游修复,或者需要 AsseticBundle 在 CompassFilter.php 行 316 上手动将 --css-dir 和 --sass-dir 设置为 $tempdir

$pb->add('--sass-dir')->add('')->add('--css-dir')->add('');

进入

$pb->add('--sass-dir')->add($tempDir)->add('--css-dir')->add($tempDir);

发生错误是因为在 Symfony 2.3 分支中更改了 ProcessBuilder,它以不同的方式转义 shell 参数,忽略空参数。从而导致生成的命令中缺少所需的“”。我已经向 CompassFilter 的创建者提出了这个问题,尽管它可能需要上游修复。

于 2013-06-13T08:07:09.513 回答
0

我遇到了同样的问题。为了修复它,我使用“kriswallsmith/assetic”:“v1.1.1 而不是“kriswallsmith/assetic”:“1.1.*@dev”。然后对我来说没问题

于 2013-06-13T15:10:14.770 回答