как сбросить кэш для registerCssFile

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

как сбросить кэш для registerCssFile

Сообщение webplus »

Здравствуйте!
Для того чтобы сбросить кэш Css и js для Asset то нужно поставить в конфиге:

Код: Выделить всё

    'components' => [
        'assetManager' => [
            'appendTimestamp' => true,
        ],
    ],
 
А как сбросить для registerCssFile - в доках о appendTimestamp не чего нет
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: как сбросить кэш для registerCssFile

Сообщение zelenin »

судя по коду, registerCssFile создает бандл, который работает по тем же правилам, что и остальные.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: как сбросить кэш для registerCssFile

Сообщение webplus »

zelenin писал(а):судя по коду, registerCssFile создает бандл, который работает по тем же правилам, что и остальные.
если можно, то можете дать пример как это реализовать?
Например вот так не работает: $this->registerCssFile(Yii::$app->request->BaseUrl.'/js/jquery.bxslider/jquery.bxslider.css', ['depends' => ['frontend\assets\AppAsset'], 'appendTimestamp' => true]);
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: как сбросить кэш для registerCssFile

Сообщение caHek2x »

ну как я понимаю по этой строке:

Код: Выделить всё

$this->getAssetManager()->bundles[$key] = new AssetBundle([ 
то что вы укажите в вашем assetmanager ... те настройки и будут браться ...
а то что вы написали: ['depends' => ['frontend\assets\AppAsset'], 'appendTimestamp' => true]
просто полетит в cssOptions

Код: Выделить всё

'cssOptions' => $options, 
оттуда только depends вытаскивается в отдельное ...

Код: Выделить всё

$depends = ArrayHelper::remove($options, 'depends', []);
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: как сбросить кэш для registerCssFile

Сообщение webplus »

caHek2x писал(а):ну как я понимаю по этой строке:
то что вы укажите в вашем assetmanager ... те настройки и будут браться ...
да указано у меня в конфиге:

Код: Выделить всё

        'assetManager' => [
            'appendTimestamp' => true,
        ],
 
но на стили подключенные на отдельных вьюхах через registerCssFile это не влияет.
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: как сбросить кэш для registerCssFile

Сообщение caHek2x »

значит недоработка ...
значит сами указывайте ...

Код: Выделить всё

$url = Yii::$app->request->BaseUrl.'/js/jquery.bxslider/jquery.bxslider.css';
$this->registerCssFile($url."?v=".@filemtime($url), ['depends' ...... 
Аватара пользователя
SilverFire
Сообщения: 23
Зарегистрирован: 2013.10.24, 13:59
Откуда: Kiev
Контактная информация:

Re: как сбросить кэш для registerCssFile

Сообщение SilverFire »

Попробуйте так:

Код: Выделить всё

$file = '/js/jquery.bxslider/jquery.bxslider.css';
$asset = new \yii\web\AssetBundle([
    'js' => [ltrim($file, '/')],
    'basePath' => '@webroot',
    'depends' => [
        'frontend\assets\AppAsset'
    ]
]);
$this->getAssetManager()->bundles[$file] = $asset;
$this->registerAssetBundle($file);
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: как сбросить кэш для registerCssFile

Сообщение webplus »

SilverFire писал(а):Попробуйте так:

Код: Выделить всё

$file = '/js/jquery.bxslider/jquery.bxslider.css';
$asset = new \yii\web\AssetBundle([
    'js' => [ltrim($file, '/')],
    'basePath' => '@webroot',
    'depends' => [
        'frontend\assets\AppAsset'
    ]
]);
$this->getAssetManager()->bundles[$file] = $asset;
$this->registerAssetBundle($file);
Жаль что так не работает:

Код: Выделить всё

 $this->registerCssFile(Yii::$app->request->BaseUrl.'/js/jquery.bxslider/jquery.bxslider.css', ['depends' => ['frontend\assets\AppAsset']]);
так все таки меньше кода и проще.
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
webplus
Сообщения: 336
Зарегистрирован: 2012.02.24, 22:05

Re: как сбросить кэш для registerCssFile

Сообщение webplus »

webplus писал(а):
SilverFire писал(а):Попробуйте так:

Код: Выделить всё

$file = '/js/jquery.bxslider/jquery.bxslider.css';
$asset = new \yii\web\AssetBundle([
    'js' => [ltrim($file, '/')],
    'basePath' => '@webroot',
    'depends' => [
        'frontend\assets\AppAsset'
    ]
]);
$this->getAssetManager()->bundles[$file] = $asset;
$this->registerAssetBundle($file);
 
Жаль что так не работает:

Код: Выделить всё

 $this->registerCssFile(Yii::$app->request->BaseUrl.'/js/jquery.bxslider/jquery.bxslider.css', ['depends' => ['frontend\assets\AppAsset']]); 
так все таки меньше кода и проще.
Просто это в шаблоне внутренней страницы надо указывать мне, а отдельный для шаблона AssetBundle создавать не хочется
Сайт по работе в Украине: https://jobis.com.ua/. Сайт по поиску строителей: https://stroyzakaz.com.ua/
Создание сайтов в Киеве: https://webplus.com.ua/ по доступной цене.
Аватара пользователя
SilverFire
Сообщения: 23
Зарегистрирован: 2013.10.24, 13:59
Откуда: Kiev
Контактная информация:

Re: как сбросить кэш для registerCssFile

Сообщение SilverFire »

Сделайте себе в проекте какой-то AssetHelper:

Код: Выделить всё

class AssetHelper
{
    public static function registerCssFile($file, $view, $options = [])
    {
           $asset = new \yii\web\AssetBundle(array_merge([
                'js' => [ltrim($file, '/')],
            'basePath' => '@webroot',
        ], $options);
        
        $view->getAssetManager()->bundles[$file] = $asset;
        $view->registerAssetBundle($file);
    }
}
И вызывайте:

Код: Выделить всё

AssetHelper::registerCssFile('/js/jquery.bxslider/jquery.bxslider.css', $this, [
    'depends' => 'frontend\assets\AppAsset'
])
Аватара пользователя
SilverFire
Сообщения: 23
Зарегистрирован: 2013.10.24, 13:59
Откуда: Kiev
Контактная информация:

Re: как сбросить кэш для registerCssFile

Сообщение SilverFire »

Или вообще переопределите компонент View и сделайте свою реализацию registerCssFile
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: как сбросить кэш для registerCssFile

Сообщение maleks »

webplus писал(а): Например вот так не работает: $this->registerCssFile(Yii::$app->request->BaseUrl.'/js/jquery.bxslider/jquery.bxslider.css',
Ctrl+F5 :)
Yii2 universal module sceleton - for basic and advanced templates
Ответить