CActiveForm & jquery.js & registerPackage

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Maxim Glushko
Сообщения: 98
Зарегистрирован: 2017.04.24, 19:16
Откуда: Україна, Одеса

CActiveForm & jquery.js & registerPackage

Сообщение Maxim Glushko »

Виджет CActiveForm тянет за собой регистрацию файлов jquery.js и jquery.yiiactiveform.js

Если подключать через конфиг пакеты:

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

'clientScript' => [
    'packages' => [
        ...
        'ladda' => [
            'baseUrl' => '',
            'css' => [$themeUrl . 'ladda-bootstrap-master/dist/ladda-themeless.min.css'],
            'js' => [
                    $themeUrl . 'ladda-bootstrap-master/dist/spin.min.js',
                    ...
            ],
            'coreScriptPosition' => CClientScript::POS_HEAD,
            'depends' => ['base'],
        ],
    ],
        ...
],
... и потом их вызывать во вьюхе:

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

Yii::app()->clientScript->registerPackage('ladda')
... получается, что jquery.js и jquery.yiiactiveform.js подключаются последними в <head>. И все пакетные скрипты, требующие jquery, перестают работать, даже если подключить ещё раз jquery. На тех страницах, где нет CActiveForm, пакеты отрабатывают нормально.

Как в CActiveForm либо запретить регистрацию jquery.js, либо заставить его подключаться первым из скриптов в <head>?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: CActiveForm & jquery.js & registerPackage

Сообщение ElisDN »

В 'depends' добавить 'jquery'
Аватара пользователя
Maxim Glushko
Сообщения: 98
Зарегистрирован: 2017.04.24, 19:16
Откуда: Україна, Одеса

Re: CActiveForm & jquery.js & registerPackage

Сообщение Maxim Glushko »

Спасибо!

Также попробовал за это время во вьюхе вставлять registerPackage просто после CActiveForm - сработало.
Но depends, конечно, чётче. Не подумал сразу, что в него можно и паков имена вставлять, и core.

Попутный вопрос: в yii1 можно паки оформить не в конфигах, а как-то изящнее, отдельными классами, как в yii2?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: CActiveForm & jquery.js & registerPackage

Сообщение ElisDN »

Maxim Glushko писал(а): 2021.07.02, 09:10 Попутный вопрос: в yii1 можно паки оформить не в конфигах, а как-то изящнее, отдельными классами, как в yii2?
CClientScript работает только с массивами. Но наверное можно попробовать сделать базовый класс Asset implements ArrayAccess, который будет обращаться к полям через $this->$offset. Тогда в 'packages' прописывать 'ladda' => new LaddaAsset().
Ответить