Как очень жестко контролировать порядок файлов CSS в Yii Framework

В Yii есть много разных способов добавить CSS на ваши страницы.

Проблема в том, что как только вы начинаете использовать расширения, виджеты, темы и тому подобное, у всех у них есть свои собственные таблицы стилей (достаточно справедливо ), и порядок, в котором CSS обрабатывается и вставляется в HTML, зависит от того, были установлены в контроллере, представлении или макете, или используются менеджером ресурсов Yii или менеджером пакетов Yii.

Недавно наш проект Yii был изменен для использования пакетов, зарегистрированных в config/main.php, таким образом:

'clientScript'=>array(
        'packages'=> array(
            'theme'=>array(
                'basePath'=>'yii.themes.default',
                'css'=>array('css/reset.css','css/main.css','css/form.css'),
                'js'=>array('js/lib.js'),
                'depends'=>array('jquery'),
            ),
...

Это привело к поломке файла CSS, поскольку он был разработан для переопределения стилей представления сетки -и теперь включался перед таблицей стилей CGridView.

Решение состояло в том, чтобы добавить эти строки внизуlayouts/main.php:

$path = Yii::getPathOfAlias('yii.themes.default').'/css/style.css';
$cssFile = Yii::app()->getAssetManager()->publish($path);
Yii::app()->getClientScript()->registerCssFile($cssFile);

Мне это кажется далеко не идеальным решением, и я ожидаю, что у нас могут возникнуть проблемы в будущем, когда мы забудем, что мы сделали, или нам придется делать то же самое с другой темой или совершенно другим проектом.

Есть ли лучший способ эффективного управления CSS, если его можно получить из стольких разных источников?

Изменить:

Я рассматриваю возможность расширения CClientScript для предоставления опции типа «переопределения», в которой вы можете указать массив файлов CSS, после которых должен быть включен регистрируемый файл. Хотя кажется, что это может быть немного шелушащимся...

6
задан bcmcfc 26 July 2012 в 08:35
поделиться