Клиентский скрипт Yii

Я хотел бы знать, есть ли способ проверить, зарегистрирован ли уже coreScript?

например yiiactiveform

Yii::app()->clientScript->registerCoreScript('yiiactiveform');

как проверить, зарегистрирован ли уже этот корскрипт? спасибо


person butching    schedule 13.04.2012    source источник


Ответы (2)


Зачем тебе это нужно знать? Фреймворк достаточно умен, чтобы не регистрировать один и тот же скрипт дважды.

Мне кажется, что вы можете использовать

if(Yii::app()->clientScript->getPackageBaseUrl('yiiactiveform') === false) {
  // core script 'yiiactiveform' has not been registered yet
}

или расширить CClientScript и реализовать функцию для ответа на этот вопрос, но это может быть излишним.

person DCoder    schedule 13.04.2012
comment
потому что я использую jquery ajax и после загрузки URL-адреса я удаляю основные сценарии, потому что, если я этого не сделаю, он будет дублироваться. поэтому мне нужно проверить, зарегистрирован ли уже corescript. Я удалил его с помощью Yii::app()-›clientScript-›scriptMap(); Спасибо за ваш ответ, это помогает! - person butching; 13.04.2012

Если вы делаете на странице материал, загружая контент, вам, вероятно, (в зависимости от вашего случая) лучше использовать renderPartial(), а не рендеринг, это не будет отображать голову и, следовательно, включать любые зарегистрированные основные сценарии. Это вариант?

person Paystey    schedule 13.04.2012
comment
да, я использую renderPartial, потому что я загружаю контент через ajaxrequest и в renderPartial, я processOutput = true, поэтому jquery внутри renderPartial вернется, но если на текущей странице уже есть jquery, созданный в renderPartial.. он все равно будет генерировать код, поэтому например, у меня есть ajaxLink с предупреждением о событии () .. оно будет предупреждать дважды. - person butching; 16.04.2012
comment
Разве запрос ajax не был сделан с помощью jQuery? Разве не безопасно предположить, что если вы сделали запрос Ajax, у вас уже загружен jQuery? Так что не загружайте его, если Yii::app()-›request-›isAjaxRequest - person Paystey; 16.04.2012
comment
В моей функции инициализации в контроллере я уже объявил coreScript jquery.js, а затем в моем ajaxRequest для перехода на другую страницу я использовал renderPartial с ProcessOutput True и с установленным значением true, jquery.js также называется потому, что внутри этого renderPartial есть jqueryscripts, поэтому, чтобы избежать этого, я использовал этот код (Yii::app()->clientScript->getPackageBaseUrl('jquery') === false) для проверки наличия coreScript. но у меня все еще есть проблемы с некоторыми основными скриптами, которые зарегистрированы после renderPartial, например yiiactiveform, он всегда возвращает false, независимо от того, используется ли он уже или нет - person butching; 17.04.2012