registerScriptFile vs renderPartial

У кого нить работает эта связка ?

у менн не работает … и я пытаюсь понять это баг ? или фича ? потому как в доках ответа

я не нашел.

не работает так же и registerScript

Это все не работает когда вид отдается через renderPartial.

Что не ужели ручками надо писать пути до скриптов ?

у меня версия 1.0.10

в отображении загруженном через renderPartial ты не видишь файлы в registerScript ?

Да. но registerScript это не файлы а просто кусок кода.

хотя и registerScriptFile тоже свой результат не выводит когда используется

renderPartial.

Попробуй в контроллер подключить вид через renderPartial

а в виде напиши следующее

…registerScript(“IDID”, “alert(‘test’)”);

У тебя показывается алерт ?

уву. код:


Yii::app()->clientScript->registerScript("IDID", "alert('test');");

отлично показывает alert даже в renderPartial-е. но тока что б он работал, надо до этого делать вызов jQuery в приложение, иначе сам registerScript будет старатся затянуть jQuery гет запросом через renderPartial

Я так понимаю что и вот такого рода конструкция




 echo CHtml::activeDropDownList(

	$model,'city', CHtml::listData(City::model()->findAll(), 'id', 'name'), 

	array(

		'prompt' => Yii::t('main', 'please select'),

		'ajax' => array(

			'type' => 'POST',

			'url' => array('to/get'),

			'update' => '#zipCode',

		),

	));



полученная через renderPartial тоже не будет работать ? (если не подключить jquery в этом же виде)

Та же самая проблема, с CKEditor’ом - при аяксовой загрузке формы в которой он присутствует, скрипты не рендерятся, может кто-нибудь посоветовать как решить это?

Код в виде:




<?php $this->widget('application.extensions.ckeditor.CKEditor',

            array('model'=>$model,

                  'attribute'=>'content',

                  'toolbar'=>'MyToolbar',

                  'width'=>'800px',

                  'height'=>'800px',

                  'language'=>'ru',

                  'skin'=>'v2',

                  'editorTemplate'=>'advanced')); ?>

</div>

JS, который загружает форму:


function loadTab(url, tabId) {

    $.ajax({

        url: url,

        dataType: "html",

        success: function(html) {

            $("#column1").append("<div id=\"cont\">"+html+"</div>");

        }

    });

}

Кусок экшна:


 $this->controller->renderPartial('application.views.admin.post.create',array('model'=>$model,'category'=>$cat));




$this->controller->renderPartial('application.views.admin.post.create',

array('model'=>$model,'category'=>$cat),false,true);



Немного измененный код в экшне: нужные для работы ckeditor’а скрипты теперь загружаются, но сам он не рендерится - может кто нибудь помочь?

Проблему решил - при загрузке - ckeditor.js грузится из ассетов - оттуда откуда надо, а ссылки на конфиг, скин и язык - ведут в корневую директорию проекта, решил пока копированием нужных файлов в корень:( если кто может посоветовать вменяемое решение - буду очень рад.

Вот пример, как я подключаю CKEditor:




Yii::app()->getClientScript()->registerScriptFile(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('application.extensions.ckeditor').DIRECTORY_SEPARATOR.'assets').DIRECTORY_SEPARATOR.'ckeditor.js');



Эта строчка кода должна быть в том view, из которого производится ajax-вызов.

для нормального подключения ck, в случае если форма содержащая его загружается с помощью ajax, я использовал такой финт ушами:




Yii::app()->clientScript->registerScript("scrId", "var CKEDITOR_BASEPATH={$assets}/ckeditor.js",

CClientScript::POS_BEGIN);



где $assets - путь к опубликованным файлам ck. Нужно чтобы объявление переменной CKEDITOR_BASEPATH происходило до объявления включения скриптов самого ck, то есть либо помещаем его в начало вьюва, либо дописываем этот код в контроллер. Про остальные проблемы при подключении его, и думаю не только - может наверное пригодиться в разных случаях - создал другую тему:tabbed UI