-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
topics.prado.txt
171 lines (129 loc) · 8.01 KB
/
topics.prado.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
Альтернативна мова шаблонів
===========================
Yii дозволяє розробнику використовувати свою улюблену мову шаблонів (наприклад, Prado або Smarty)
для опису представлень контролера або віджету.
Для цього потрібно написати і встановити свій компонент [viewRenderer|CWebApplication::viewRenderer].
Обробник представлення перехоплює виклики [CBaseController::renderFile],
компілює файл представлення з альтернативним синтаксисом і віддає результат компіляції.
> Info|Інформація: Не рекомендується використовувати альтернативний синтаксис шаблонів для опису представлень компонентів, які викладаються у відкритий доступ. Це призведе до вимоги використовувати той же синтаксис, що використовується у представленні компонента.
Далі ми покажемо, як використовувати [CPradoViewRenderer] — обробник представлень,
що дозволяє розробнику використовувати синтаксис шаблонів, який використовується у фреймворку
[Prado](http://www.pradosoft.com/). Якщо ви хочете реалізувати свої обробники представлень, обовʼязково ознайомтеся із [CPradoViewRenderer].
Використання `CPradoViewRenderer`
---------------------------------
Для використання [CPradoViewRenderer] необхідно налаштувати додаток наступним чином:
~~~
[php]
return array(
'components'=>array(
…,
'viewRenderer'=>array(
'class'=>'CPradoViewRenderer',
),
),
);
~~~
За замовчуванням [CPradoViewRenderer] буде компілювати вихідні файли представлень і зберігати отримані файли PHP в директорію [runtime](/doc/guide/basics.convention#directory).
PHP-файли змінюються тільки у тому випадку, якщо змінено вихідне представлення.
Тому, використання [CPradoViewRenderer] тягне за собою дуже незначне падіння продуктивності.
> Tip|Підказка: Незважаючи на те, що [CPradoViewRenderer] додає новий синтаксис для більш швидкого і зручного опису представлень, ви можете використовувати код PHP також, як і у звичайних представленнях.
Нижче будуть описані конструкції, які підтримуються [CPradoViewRenderer].
### Скорочені PHP-теги
Скорочені PHP-теги — гарний спосіб скоротити код, який використовується у представленні.
Вираз `<%= expression %>` перетворюється у `<?php echo expression ?>`.
`<% statement %>` — у `<?php statement ?>`. Приміром:
~~~
[php]
<%= CHtml::textField($name,'value'); %>
<% foreach($models as $model): %>
~~~
перетворюється у
~~~
[php]
<?php echo CHtml::textField($name,'value'); ?>
<?php foreach($models as $model): ?>
~~~
### Компонентні теги
Компонентні теги використовуються для того, щоб вставити у представлення
[віджет](/doc/guide/basics.view#widget). Синтаксис наступний:
~~~
[php]
<com:WidgetClass property1=value1 property2=value2 …>
// вміст віджета
</com:WidgetClass>
// віджет без вмісту
<com:WidgetClass property1=value1 property2=value2 …/>
~~~
Тут `WidgetClass` визначає імʼя класу віджета або
[псевдонім шляху](/doc/guide/basics.namespace).
Початкові значення властивостей можуть бути як рядками, укладеними у лапки,
так і виразами PHP, укладеними у фігурні дужки. Наприклад:
~~~
[php]
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
~~~
перетворюється у
~~~
[php]
<?php $this->widget('CCaptcha', array(
'captchaAction'=>'captcha',
'showRefreshButton'=>false)); ?>
~~~
> Note|Примітка: Значення `showRefreshButton` задано як `{false}`
замість `"false"` так як останнє означає рядок, а не логічне значення.
### Кешуючі теги
Кешуючі теги — короткий спосіб використання
[кешування фрагментів](/doc/guide/caching.fragment). Синтаксис наступний:
~~~
[php]
<cache:fragmentID property1=value1 property2=value2 …>
// вміст, який необхідно кешувати
</cache:fragmentID >
~~~
Тут `fragmentID` — унікальний ідентифікатор кешувального обʼєкта.
Пари імʼя-значення використовуються для налаштування кешування фрагментів. Наприклад:
~~~
[php]
<cache:profile duration={3600}>
// інформація із профілю користувача
</cache:profile >
~~~
буде перетворено у
~~~
[php]
<?php if($this->beginCache('profile', array('duration'=>3600))): ?>
// інформація із профілю користувача
<?php $this->endCache(); endif; ?>
~~~
### Захоплюючі теги
Як і кешуючі теги, захоплюючі теги - компактний спосіб використання
[CBaseController::beginClip] та [CBaseController::endClip]. Синтаксис наступний:
~~~
[php]
<clip:clipID>
// вміст для захоплення
</clip:clipID >
~~~
Тут `clipID` — унікальний ідентифікатор захопленого вмісту.
Захоплюючі теги перетворюються таким чином:
~~~
[php]
<?php $this->beginClip('clipID'); ?>
// вміст для захоплення
<?php $this->endClip(); ?>
~~~
### Теги коментарів
Теги коментарів використовуються для написання коментарів, доступних виключно розробникам.
Дані теги будуть видалені безпосередньо перед відображенням представлення. Синтаксис наступний:
~~~
[php]
<!---
Цей коментар буде вирізаний…
--->
~~~
Одночасне використання шаблонів різного формату
-----------------------------------------------
Починаючи з версії 1.1.2 можна використовувати одночасно як альтернативний, так і звичайний PHP синтаксис шаблонів.
Для цього необхідно задати властивості обробника шаблонів [CViewRenderer::fileExtension] значення, відмінне від `.php`.
Приміром, якщо воно буде виставлено у `.tpl`, то всі шаблони із розширенням `.tpl` будуть оброблятися обраним обробником представлень. Шаблони з розширенням `.php`, як і раніше, будуть використовувати стандартний синтаксис PHP.
<div class="revision">$Id: topics.prado.txt 3226 2011-05-18 10:37:47Z mdomba $</div>