4

我在 Symfony 2 和 MopaBootstrapBundle 中使用较少的资产。

动态生成的 css 文件似乎有效,但未应用样式。如果我们转储资产,那么它确实可以在 prod 中使用,但我不想在 dev 中这样做,因为这与我的想法背道而驰。

配置.yml

assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ MopaBootstrapBundle ]
    #java: /usr/bin/java
    filters:
        cssrewrite:     ~
        less:
            node:       /usr/local/bin/node
            node_paths: [/usr/local/lib/node_modules]
            # auto apply less to all .less files
            apply_to:   "\.less$"

config_dev.yml

assetic:
    use_controller: true

在我的模板中是:

{% stylesheets
    '@MopaBootstrapBundle/Resources/public/less/mopabootstrapbundle.less'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen" />

呈现的html是:

 <link href="/app_dev.php/css/bab9907_mopabootstrapbundle_1.css" type="text/css" rel="stylesheet" media="screen" />

此文件解析,我可以将 URL 粘贴到地址栏中并查看有效的 CSS 文件。

此外,如果我们将资产倾销到产品中,它也可以工作

app/console assetic:dump --env=prod

我们清除 prod 缓存并设置输出样式。在开发中,我得到零样式。

我也跑过:

app/console assets:install --symlink web
Installing assets using the symlink option
Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework
Installing assets for Mopa\Bundle\BootstrapBundle into web/bundles/mopabootstrap
Installing assets for Symfony\Bundle\WebProfilerBundle into web/bundles/webprofiler
Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution

所有这些都是同上的 Javascript(当 URL 被跟踪时文件解析)

难道我做错了什么?

4

3 回答 3

3

我也遇到了这个问题,我也在使用FosRestBundle并且配置错误:

fos_rest:
    format_listener:
        rules:
            - { path: '^/', priorities: ['json', 'html'], fallback_format: html, prefer_extension: true }

此规则现在适用于对应用程序的每个请求,并且只会知道 json 和 html,并且由于 .css 不匹配它使用 application/json

正确的应该是:

fos_rest:
    format_listener:
        rules:
            - { path: '^/api', priorities: ['json', 'html'], fallback_format: html, prefer_extension: true }                
            - { path: '^/', priorities: [ 'html', '*/*'], fallback_format: html, prefer_extension: true }

最后一行适用于尚未匹配的所有内容,它告诉/使用内部匹配的内容或类似的智能内容。瞧use_controller: true,又开始工作了

于 2013-10-08T13:43:10.427 回答
0

同样的事情发生在我身上,所以这就是我解决它的方法

我已将 config_dev.yml 中的此资产设置更改为此

assetic:
    use_controller: false

删除了开发缓存并且它有效

注意:如果您使用的是 MAMP,请确保遵循此链接中的内容

MopaBootstrapBundle 少安装

于 2013-01-11T02:11:21.593 回答
0

您是粘贴带有 app_dev.php 的 URL 还是没有粘贴?如果文件真的解决了,它应该可以工作,而不是 Sf2 问题。您的 webroot 是否指向“web”目录?如果没有,请尝试删除链接 href 中的前导“/”,或将其更改为正确的路径。在开发中,我通常有这样的东西:

<link href="http://myapp-static.dev/myapp/web/app_dev.php/css/all.css" media="screen" type="text/css" rel="stylesheet">

我预先添加了一个“assets_base_url”变量(我在 twig globals 和 parameters.yml 中定义),这就是生成的 URL。如果我改用“/app_dev.php/css/all.css”,它会失败,因为浏览器会将其解释为“http://myapp-static.dev/app_dev.php/css/all.css”

于 2012-08-25T03:15:04.760 回答