nepster-web
@nepster-web

Как добавить дополнительный атрибут в подключении css файлов в Yii2?

Задача такая, есть несколько css-файлов, в одном из css-файлов стоит параметр: media="print", без него верстка едет.

Вот так я подключаю свои css файлы:
class AppAsset extends AssetBundle
{
	public $sourcePath = '@frontend/modules/site/assets';
	public $css = [
        'http://fonts.googleapis.com/css?family=Patua+One|Montserrat|Open+Sans:400,700,600',
        '/js/fancybox/jquery.fancybox8cbb.css?v=2.1.5',
        '/js/mediaelement/mediaelementplayer.css',
        '/css/settings_style.css',
        '/css/style-print.css',
        '/css/skin_style.css',
        '/css/style.css',
        '/css/color_cheme.css',
        '/css/responsive.css',
    ];
...


Они добавляются следующим образом:
<link href="http://fonts.googleapis.com/css?family=Patua+One|Montserrat|Open+Sans:400,700,600" rel="stylesheet">
<link href="/js/fancybox/jquery.fancybox8cbb.css?v=2.1.5" rel="stylesheet">
<link href="/js/mediaelement/mediaelementplayer.css" rel="stylesheet">
<link href="/css/settings_style.css" rel="stylesheet">
<link href="/css/style-print.css" rel="stylesheet">
<link href="/css/skin_style.css" rel="stylesheet">
<link href="/css/style.css" rel="stylesheet">
<link href="/css/color_cheme.css" rel="stylesheet">
<link href="/css/responsive.css" rel="stylesheet">


Проблем состоит в том, что:
<link href="/css/style-print.css" rel="stylesheet">


Должно быть:
<link href="/css/style-print.css" type="text/css" media="print" rel="stylesheet"/>


я пробовал в head.php зарегистрировать этот файл отдельно:
$this->registerCssFile('/css/style-print.css', [], 'media="print"');


Но вылетает такая вот ошибка:
in F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\helpers\BaseHtml.php
Illegal string offset 'rel'

// показывая на такой вот код 
* @see url()
     */
    public static function cssFile($url, $options = [])
    {
        if (!isset($options['rel'])) {
            $options['rel'] = 'stylesheet';
        }
        $options['href'] = static::url($url);
        return static::tag('link', '', $options);
    }


При этом работает просто:
$this->registerCssFile('/css/style-print.css');

Подскажите, пожалуйста, как для конкретных css файлов добавлять атрибуты и почему не работает
registerCssFile с дополнительными атрибутами ?
  • Вопрос задан
  • 7138 просмотров
Решения вопроса 2
metamorph
@metamorph
Что же касается атрибутов бандла - сейчас реализованы только опции на весь бандл, см свойство $cssOptions.
Соответственно, либо в отдельный ассет выносить с установлением зависимости, либо руками, через registerCssFile.
Ответ написан
metamorph
@metamorph
В registerCssFile третий параметр - массив, то есть Вам нужно как-то вот так делать:
$this->registerCssFile('/css/style-print.css', [], ['media' => 'print']);


При передаче строки она придет в cssFile(), а там, насколько я вижу, нет дополнительной проверки на тип.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы