Пакет ресурсов Symfony2

config.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; ?>

Среда Prod работает просто отлично. Генерируется css/homepage.css, и в результирующем html есть ссылка на него.

Проблемы со средой разработки. Если я попытаюсь сгенерировать css динамически, я получаю сообщение об ошибке «Невозможно сгенерировать URL-адрес для именованного маршрута ...», с параметром «связки», установленным в config_dev.yml, и активными маршрутами в roting_dev.yml. Это только решения, которые я нашел для этой проблемы, ни одно из них не сработало.

Если я попытаюсь сделать prod-подобный, установив для «use_controller» значение false, в результате html я получу ссылку на «homepage_homepage_1.css» вместо «homepage.css», которая не генерируется.


person BeeM4n    schedule 31.07.2015    source источник


Ответы (1)


Пробовали ли вы новый компонент Asset? для Symfony 2.7?

приложение/config/config.yml

framework:
    assets:
        version: 'v5'
        version_format: '%%s?version=%%s'
        base_path: ~
        base_urls: ['http://cdn.example.com', 'https://secure.example.com']
        packages:
           scss:
               base_path: bundles/mybundle/scss
           compass:
               base_path: bundles/mybundle/compass

Затем вы должны вспомнить правильную таблицу стилей примерно так:

{{ asset('myscss.css', 'scss') }}
{# /bundles/mybundle/scss/myscss.css #}

{{ asset('mycompass.css', 'compass') }}
{# /bundles/mybundle/compass/mycompass.css #}

Я предлагаю вам использовать Twig в своих представлениях, чтобы вы могли фильтровать свои переменные через оператор if (например, assetic).

person sentenza    schedule 14.08.2015