Symfony 2 dev环境中的资产路径。路径有效,但未应用样式

时间:2012-08-24 18:46:07

标签: less symfony-2.1 assetic

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

动态生成的css文件似乎有效但未应用样式。如果我们转储资产然后它确实有效,但我不想在开发中这样做,因为这与我认为的整个观点相反。

config.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文件。

此外,如果我们在prod中转储资产,它也可以运作

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时解析)

我做错了吗?

3 个答案:

答案 0 :(得分: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再次发挥作用

答案 1 :(得分:0)

您是否使用app_dev.php粘贴了网址?如果文件真的解析了,它应该正常工作,并且不是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'< / p>

答案 2 :(得分:0)

同样的事发生在我身上 所以这就是我如何解决它

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

assetic:
    use_controller: false

删除了开发缓存并且工作正常

注意:如果您使用的是MAMP,请务必关注此链接中的内容

MopaBootstrapBundle less-installation