Напомню, стандартное подключение JS выглядит так:
$js = " $('.field').val('".Yii::t('main', 'Это поле ввода')."'); "; Yii::app()->clientScript->registerScript('my-script', $js, CClientScript::POS_END);
или так
Yii::app()->clientScript->registerScript('my-script', "
$('.field').val('".Yii::t('main', 'Это поле ввода')."');
", CClientScript::POS_END);
Повторюсь: в данном случае JavaScript код по сути есть текст и подсветка синтаксиса к нему не применяется. Но, как уже отмечалось ранее, здесь есть одно неоспоримое преимущество - это простое внедрение PHP кода в JavaScript .
А для того, чтобы редактор подсвечивал синтаксис JS достаточно поместить его в файл .js. При этом внедрение PHP переменных становится затруднительным.
Идея заключается в том, чтобы объединить оба условия и сделать так, чтобы была подсветка кода и несложная передача данных из PHP.
JavaScript код мы переносим в .js файл и подключаем в представлении, а перед подключением файла подключаем текст JavaScript и определяем в нем передаваемые из PHP переменные:
// Определяем переменные $forlogin = " var php_myfield = '".Yii::t('main', 'Это поле ввода')."'; "; // Подключаем JavaScrpt код Yii::app()->clientScript->registerScript('to-login', $forlogin, CClientScript::POS_END); // Подключаем JavaScript файл Yii::app()->clientScript->registerScriptFile(Yii::app()->theme->baseUrl . '/js/site/login.js', CClientScript::POS_END);
Содержимое файла login.js
$('.field').val(php_myfield);
Мы располагаем файл login.js не в каталоге themes/mytheme/assets/js, а в отдельном каталоге themes/mytheme/js. Этот код будет использоваться только с данным конкретным представлением и по этому будет подгружаться только во время вывода представления.
Для удобства можно повторить структуру каталогов view, как это принято и расположть наш файл login.js в каталоге themes/mytheme/js/sites, если соответствующее представление находится в каталоге themes/mytheme/view/sites
Комментариев нет :
Отправить комментарий
Есть что сказать - скажи