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


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

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

Войти через центр авторизации
Похожие вопросы
РосТендер Москва
от 130 000 до 150 000 руб.
Алгоритмика Москва
от 110 000 до 160 000 руб.
Living Core Казань
от 50 000 руб.
23 сент. 2019, в 12:36
1000 руб./в час
23 сент. 2019, в 12:29
3000 руб./за проект
23 сент. 2019, в 12:09
20000 руб./за проект