配置.yml:
assetic:
debug: "%kernel.debug%"
use_controller: false
bundles: [ FrontendBundle ]
#java: /usr/bin/java
ruby: /usr/bin/ruby
sass: /usr/bin/sass
read_from: %kernel.root_dir%/../../web/
write_to: %kernel.root_dir%/../../web/
filters:
cssrewrite: ~
scss:
style: 'expanded'
compass: true
apply_to: "\.scss$"
compass:
bin: /usr/bin/compass
images_dir: %kernel.root_dir%/../../src/FrontendBundle/Resources/assets/images
generated_images_path: %kernel.root_dir%/../../src/FrontendBundle/Resources/public/images/sprites
http_generated_images_path: /images/sprites
模板:
<?php foreach ($view['assetic']->stylesheets(
array('@FrontendBundle/Resources/assets/scss/homepage.scss'),
array('compass'),
array('output' => 'css/homepage.css')
) as $url):
$styles[] = '<link rel="stylesheet" href="'. $view->escape($url) .' " />' ?>
<?php endforeach; ?>
产品环境工作得很好。生成 css/homepage.css,结果 html 中有指向它的链接。
问题在于开发环境。如果我尝试动态生成 css,我会收到“无法为命名路由生成 URL ...”错误,在 config_dev.yml 中设置了“bundles”选项,在 roting_dev.yml 中设置了资产路由。这是我为这个问题找到的唯一解决方案,没有一个有效。
如果我尝试做类似 prod 的操作,将“use_controller”设置为 false,在结果 html 中我会得到指向“homepage_homepage_1.css”的链接,而不是“homepage.css”,它不会生成。