Кастомизация CoreScript в коде

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Leffken
Сообщения: 115
Зарегистрирован: 2015.07.10, 15:49
Откуда: yola
Контактная информация:

Кастомизация CoreScript в коде

Сообщение Leffken »

Всем привет!
Проект разросся, но используется jQuery 1.11.1
В связи с новым функционалом на некоторых страницах появилась необходимость использовать jQuery 3.2.1, но боюсь сломать остальную часть сайта. Решил в layout'е переопределить corescript следующим образом:

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

Yii::app()->clientScript->packages['jquery'] = array(
            'baseUrl' => '//ajax.googleapis.com/ajax/libs/jquery/3.2.1/',
            'js' => array(
                'jquery.min.js'
            ),
        );
        Yii::app()->clientScript->packages['jquery.ui'] = array(
            'baseUrl' => '//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/',
            'js' => array('jquery-ui.min.js'),
            'depends'=>array('jquery'),
        );

        Yii::app()->clientScript->registerCoreScript('jquery');
        Yii::app()->clientScript->registerCoreScript('jquery.ui');
А в конфиге осталось по старому:

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

'clientScript'=>array(
            'class' => 'MyClientScript',
            'coreScriptPosition' => CClientScript::POS_END,
            'packages'=>array(
                'jquery'=>array(
                    'baseUrl' => '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/',
                    'js'=>array('jquery.min.js'),
                ),
                'jquery.ui' => array(
                    'baseUrl' => '//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/',
                    'js' => array('jquery-ui.min.js'),
                    'depends'=>array('jquery'),
                ),
            ),
        ),
Вроде все ничего и работает, но как только начинаю использовать yii'шный виджет ListView , который выполняет

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

Yii::app()->clientScript->registerCoreScript('jquery');
То все сломалось! Т.е. получается так что я в layout'e все прописал, но ListView выполняется быстрее чем код в layout'e и следоватьельно регистрируются скрипты из конфига, а когда дело доходит до layout то там уже ничего не выполняется. Как можно обойти данную штуку ? или как мне быть вообще ? Можно ли как то "перерегистрировать принудительно" скрипт?
Ответить