1

我在 Symfony2 下有一个使用 LessPHP 的网站。在开发环境中一切正常。当我点击http://mylocalsite/app_dev.php/浏览器到达http://mylocalsite/app_dev.php/css/XXXX_myFile_1.css.

但是当我点击http://mylocalsite/浏览器尝试访问http://mylocalsite/css/XXXX_myFile_1.css并收到 404 错误。

prod.log 仅包含此内容

[2014-01-24 12:08:46] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /css/XXXX_myFile_1.css"" at /the/path

config.yml

# Assetic Configuration
assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite: ~
        lessphp:
            apply_to: "\.less$"
            file: %kernel.root_dir%/../vendor/leafo/lessphp/lessc.inc.php
            # Formatter options: compressed, lessjs, classic
            formatter: "compressed"
            preserve_comments: false

树枝模板

{% stylesheets '@ProjectMyBundle/Resources/less/myFile.less' %}
    <link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

编辑

我做了php app/console assetic:dump --env=prod --no-debug这给了我一个web/css/XXXX.css文件。但浏览器仍在寻找一个名为XXXX_myFile_1.css.

我试图这样设置输出

{% stylesheets output='css/myFile.css'
    '@ProjectMyBundle/Resources/less/myFile.less' %}
    <link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}

再次执行php app/console assetic:dump --env=prod --no-debug,这给了我一个web/css/myFile.css文件。但现在浏览器正在寻找一个名为myFile_myFile_1.css.

回答

use_controller必须在 config.yml 文件中设置为true 。

谢谢

4

1 回答 1

1

您需要转储资产(=assetic 会将所有这些资产合并到一个大文件中)。在开发环境中,文件通过主控制器提供服务并动态生成。部署应用程序时,应使用转储资产

php app/console assetic:dump --env=prod --no-debug

从而在文件系统上物理生成这些文件。在 Symfony 文档中阅读更多内容。

于 2014-01-24T22:07:17.483 回答