2012-04-13 3 views
0

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

, например, yiiactiveform

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

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

ответ

2

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

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

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

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

+0

потому что я использую jquery ajax и при загрузке URL-адреса, Im удаляет исходные тексты, потому что, если я не ... это будет дублировать. поэтому мне нужно проверить, зарегистрирован ли исходный код. Im удалил его с помощью Yii :: app() -> clientScript-> scriptMap(); Спасибо за ваш ответ, это помогает! – butching

0

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

+0

yes Я использую renderPartial, потому что im загружает содержимое через ajaxrequest и в renderPartial, I processOutput = true, поэтому jquery внутри renderPartial вернется, но если на текущей странице уже есть jquery, созданный в renderPartial, он все равно сгенерирует код поэтому, например, у меня есть ajaxLink с предупреждением о событиях() .. он будет предупреждать дважды. – butching

+0

Был ли запрос ajax не выполнен с помощью jQuery? Небезопасно ли считать, что если вы сделали запрос Ajax, у вас уже загружен jQuery? Поэтому не загружайте его, если Yii :: app() -> request-> isAjaxRequest – Paystey

+0

В моей функции init в контроллере я уже объявил coreScript ** jquery.js **, а затем на моем ajaxRequest переместиться на другую страницу, которую я использовал renderPartial w/ProcessOutput True и w/this установлено в true, jquery.js также называется coz, внутри него отображаются jqueryscripts внутри, что renderPartial, поэтому, чтобы избежать этого, я использовал этот код '(Yii :: app() -> clientScript-> getPackageBaseUrl ('jquery') === false) ', чтобы проверить, существует ли coreScript. но все еще имейте w/проблемы с некоторыми corescript, которые зарегистрированы после renderPartial, как ** yiiactiveform **, он всегда возвращает false, который уже используется или нет – butching