Пути к изображениям фильтра Symfony2 cssrewrite еще далеко - PullRequest
7 голосов
/ 01 апреля 2012

Я пытаюсь заставить Symfony2 работать с jQuery UI.Я получил часть JavaScript, которая работает нормально, но у меня возникают проблемы с работой изображений.

Одна вещь, которую я прочитал в документации Assetic, - это то, что фильтр cssrewrite может принимать пути к изображениям.в файлах CSS и обновите их, чтобы пути указывали на правильные места.Это было похоже на то, что мне было нужно, поэтому я включил cssrewrite.Вот как cssrewrite изменил мои пути:

// original
images/ui-icons_222222_256x240.png

// using cssrewrite
../../../app/Resources/public/css/themes/base/images/ui-icons_222222_256x240.png

Первый путь не годится.Путь cssrewrite по крайней мере указывает на правильный путь в файловой системе, но относительно моего webroot путь cssrewrite ОТКЛЮЧЕН.Очевидно, что мой каталог app не является общедоступным.

Как мне получить фильтр cssrewrite, чтобы изменить мои пути на что-то, что действительно будет работать?

Вот мое включение таблицы стилей.(И да, я знаю, что то, как я индивидуально включаю все эти CSS-файлы, глупо, но сейчас я не беспокоюсь об этом.)

    {% stylesheets
        '../app/Resources/public/css/*'
        '../app/Resources/public/css/themes/base/jquery.ui.accordion.css'
        '../app/Resources/public/css/themes/base/jquery.ui.all.css'
        '../app/Resources/public/css/themes/base/jquery.ui.autocomplete.css'
        '../app/Resources/public/css/themes/base/jquery.ui.base.css'
        '../app/Resources/public/css/themes/base/jquery.ui.button.css'
        '../app/Resources/public/css/themes/base/jquery.ui.core.css'
        '../app/Resources/public/css/themes/base/jquery.ui.datepicker.css'
        '../app/Resources/public/css/themes/base/jquery.ui.dialog.css'
        '../app/Resources/public/css/themes/base/jquery.ui.progressbar.css'
        '../app/Resources/public/css/themes/base/jquery.ui.resizable.css'
        '../app/Resources/public/css/themes/base/jquery.ui.selectable.css'
        '../app/Resources/public/css/themes/base/jquery.ui.slider.css'
        '../app/Resources/public/css/themes/base/jquery.ui.tabs.css'
        '../app/Resources/public/css/themes/base/jquery.ui.theme.css'
    %}
        <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}

1 Ответ

11 голосов
/ 01 апреля 2012

Есть некоторые известные проблемы с фильтром CssRewrite.Насколько я знаю, он не работает должным образом с использованием нотации @BundleName, и обходной путь, по-видимому, связывает файлы CSS с помощью пути bundles/bundle_name.

Таким образом, ваш код должен выглядеть примерно так:

{% stylesheets filter='cssrewrite' 
        'bundles/<your_bundle_name>/css/*'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.accordion.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.all.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.autocomplete.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.base.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.button.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.resizable.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.selectable.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.slider.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.tabs.css'
        'bundles/<your_bundle_name>/css/themes/base/jquery.ui.theme.css'
    %}
        <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}

Где <your_bundle_name> - это, очевидно, имя пакета, над которым вы работаете.

РЕДАКТИРОВАТЬ: не забудьте дать команду php app/console assets:install --symlink web, чтобысимволически связать ваши активы в каталог web.

...