Yii2: перегрузка CSS расширения - PullRequest
1 голос
/ 23 марта 2020

Я использую расширение dmstr / yii2-cook ie -consent для согласия повара ie и хочу изменить CSS расширения. CSS в расширении включено как AssetBundle.

Вот мои вопросы:

  • Как перегрузить расширение CSS с помощью моего CSS во время удаления (нет AssetBundle , без кэширования)?
  • Как использовать мой CSS в работе, т. е. возможно ли навсегда перезаписать расширение CSS (с использованием кеширования, конечно)?

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Во время разработки вы можете использовать

$this->registerCss(".your-css {}")

для создания прототипа

При запуске вы можете перегрузить пакет ресурсов расширений с помощью внедрения зависимостей

'assetManager' => [
    'bundles' => [
        'dmstr\cookieconsent\assets\CookieConsentAsset' => [
            'sourcePath' => '/path/to/your/source/path',
            'css' => [
                'css/yourstyles.css'
            ]
        ]
    ]
]

Имейте в виду что пакет предлагает функциональность для загрузки активов в зависимости от среды приложения. В рабочем режиме загружается сжатая версия css.

https://github.com/dmstr/yii2-cookie-consent/blob/master/src/assets/CookieConsentAsset.php#L20

0 голосов
/ 23 марта 2020

Добавление просто как другой параметр

Если я не ошибаюсь, вы используете виджет, я бы расширил функцию run(), которая регистрирует скрипты, и создал бы мой собственный файл класса активов. с загруженным моим пользовательским файлом css.

Я предполагаю, что вы используете advance-приложение для Yii2, или соответственно измените пространство имен.

AssetBundle class

<?php

namespace common\assets;

use yii\web\AssetBundle;

class CookieConsentAsset extends AssetBundle
{

    public $sourcePath = __DIR__;

    public $css = [
        'path/to/custom.css',
    ];

    public $depends = [
        'dmstr\cookieconsent\assets\CookieConsentAsset'
    ];

}

и расширьте класс виджета до common\components или common\widgets или любого другого, который вам подходит

<?php
namespace common\components;

use dmstr\cookieconsent\widgets\CookieConsent as BaseCookieConsent;
use common\assets\CookieConsentAsset;

class CookieConsent extends BaseCookieConsent
{
    public function run(){
        CookieConsentAsset::register($this->view);
        parent::run();
    }
}

Теперь вы можете использовать свой собственный виджет, изменив пространство имен на

<?php
    use common\components\CookieConsent;

    echo CookieConsent::widget();
...