forked from samdark/yiiframework_ru_cookbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjs.package.txt
75 lines (54 loc) · 2.6 KB
/
js.package.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Создание пакетов JS и CSS
==========
В Yii есть возможность создания своих пакетов, содержащих JS и CSS файлы. При описании пакета можно указать зависимости от других пакетов.
Есть замечательный инструмент для рисования графиков на JS — [highcharts](http://www.highcharts.com/ "highcharts"), но он использует фреймворк jQuery и сам jQuery не подключает.
Рассмотрим пример использования пакета.
Создаём пакет, где указываем JS и CSS файлы из highcharts и прописываем зависимость от пакета с jQuery. В Yii jQuery является встроенным пакетом.
Список всех встроенных пакетов можно найти в файле `framework/web/js/packages.php`
Настройка компонента в `protected/config/main.php`:
~~~
[php]
'clientScript'=>array(
'packages' => array(
// Уникальное имя пакета
'highcharts' => array(
// Где искать подключаемые файлы JS и CSS
'baseUrl' => '/js/highcharts/',
// Если включен дебаг-режим, то подключает /js/highcharts/highcharts.src.js
// Иначе /js/highcharts/highcharts.js
'js'=>array(YII_DEBUG ? 'highcharts.src.js' : 'highcharts.js'),
// Подключает файл /js/highcharts/highcharts.css
'css' => array('highcharts.css'),
// Зависимость от другого пакета
'depends'=>array('jquery'),
),
)
)
~~~
Использование
-------------
Теперь вместо многострочного кода:
~~~
[php]
Yii::app()->clientScript
->registerPackage('jquery')
->registerScriptFile('/js/highcharts/highcharts.js')
->registerCssFile('/js/highcharts/highcharts.css');
~~~
пишем лаконично:
~~~
[php]
Yii::app()->clientScript
->registerPackage('highcharts');
~~~
Yii загрузит jQuery только один раз, даже если какой-то другой модуль, виджет или ваш код уже подключил jQuery.
~~~
[php]
Yii::app()->clientScript
->registerPackage('jquery');
…
Yii::app()->clientScript
->registerPackage('highcharts');
~~~
---
- `Автор`: Загиров Рустам, Stamm ([zagirov.name](http://zagirov.name/))