Intereting Posts
Как загрузить представление из альтернативного каталога в Laravel 4 Можно выбрать диапазон дат в течение 65 лет с помощью JOIN? Сократите URL, удалив пустые переменные GET и упростив имена переменных Предупреждение: массовая ошибка в json_encode () Как загрузить файл с помощью PHP и Mysql DB Передавать объект или массив PHP с одного сайта на другой сайт? Как изменить формат даты в зависимости от страны Как вы переименовываете тег в SimpleXML через объект DOM? Как создать ссылки в codeigniter? Избегайте повторения уведомлений по электронной почте о некоторых завершенных заказах Ошибка инструкции обновления PHP для unixODBC Нужна помощь в PHP-петле PHP – подсчитать повторяющиеся значения в двухмерном массиве, а затем отобразить только уникальные значения со счетчиком Facebook Проверьте, понравилась ли пользователю страница или нет. проверьте, действительно ли соединение mysql

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.