Intereting Posts
Blade Laravel: как установить переменные в шаблоне? WordPress – получение сообщений по типу и категории пользовательских сообщений, причем каждая категория автоматически помещается в DIV Как отправить запрос на удаление из PHP класс формы не найден zend 2.3 Переменные базы данных базы данных доступа из помощника в Codeigniter проблемы в создании расширенного поиска с использованием запроса График работы персонала в течение нескольких минут Многопользовательский поисковый запрос PHP MySQL с использованием опции / выбора тегов HTML-формы Библиотека GD создает изображение с динамическим текстом на нем Apache 2.4 с PHP 5.4: нет доступных mysql popen не выполняется с помощью команды "sh: <command>: not found" Получение переменной GET «?» В laravel альтернативы simpleXML для анализа XML-файлов с помощью PHP simplexml, возвращая несколько элементов с тем же тегом ошибка с обновлением миграции

RegisterPackage зависит от RegisterScriptFile

У меня есть пакет, который требует библиотеки Google Map. И я реализовал его так, как в представлении.

<?php Yii::app()->clientScript->registerScriptFile('http://maps.googleapis.com/maps/api/js?sensor=false&language=' . Yii::app()->language . '&region='.Yii::app()->language, CClientScript::POS_HEAD); ?> <?php Yii::app()->clientScript->registerPackage('somelibrary'); ?> 

(Обратите внимание, что для библиотеки Google Map необходим параметр Yii::app()->language ).

Но в выводе пакет всегда размещается над картами google.

 <script type="text/javascript" src="/project/assets/74e60422/somelibrary.js"></script> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;language=id&amp;region=id"></script> 

Есть ли решение сделать библиотеку Google Maps в качестве зависимости от пакета? Или, по крайней мере, как разместить пакет somelibrary сразу после (не намного ниже) карт Google?

Вы можете сделать скрипт карты google самим пакетом, настроив свойство пакетов CClientScript. Затем вы можете добавить googlemap в зависимости от ваших пакетов, настроив «depend» в конфигурации пакета. Затем следует добавить скрипты в правильном порядке.

Чтобы добавить пакет, вы можете сделать следующее (не пробовал, но должен работать):

 Yii::app()->clientScript->addPackage('googleMap', array( 'baseUrl'=>'http://maps.googleapis.com/maps/api', 'js'=>array('js?sensor=false&language=' . Yii::app()->language . '&region='.Yii::app()->language) )); 

Тот же 'googleMap'=>array(/*...*/) будет работать, когда вы поместите его в свою конфигурацию.

Метод registerPackage() не имеет возможности определять свою позицию, но вы можете определить положение файла registerScript () следующим образом …

 public CClientScript registerScript(string $id, string $script, integer $position=4) 

$ position целое положение кода JavaScript. Допустимые значения включают следующее: CClientScript :: POS_HEAD: скрипт вставляется в раздел заголовка прямо перед элементом заголовка. CClientScript :: POS_BEGIN: скрипт вставлен в начало раздела тела. CClientScript :: POS_END: ​​сценарий вставлен в конец раздела тела. CClientScript :: POS_LOAD: скрипт вставляется в функцию window.onload (). CClientScript :: POS_READY: скрипт вставлен в функцию jQuery.