Yii дозволяє розробнику використовувати свою улюблену мову шаблонів (наприклад, Prado або Smarty) для опису представлень контролера або віджету. Для цього потрібно написати і встановити свій компонент viewRenderer. Обробник представлення перехоплює виклики CBaseController::renderFile, компілює файл представлення з альтернативним синтаксисом і віддає результат компіляції.
Інформація: Не рекомендується використовувати альтернативний синтаксис шаблонів для опису представлень компонентів, які викладаються у відкритий доступ. Це призведе до вимоги використовувати той же синтаксис, що використовується у представленні компонента.
Далі ми покажемо, як використовувати CPradoViewRenderer — обробник представлень, що дозволяє розробнику використовувати синтаксис шаблонів, який використовується у фреймворку Prado. Якщо ви хочете реалізувати свої обробники представлень, обовʼязково ознайомтеся із CPradoViewRenderer.
CPradoViewRenderer
¶Для використання CPradoViewRenderer необхідно налаштувати додаток наступним чином:
return array(
'components'=>array(
…,
'viewRenderer'=>array(
'class'=>'CPradoViewRenderer',
),
),
);
За замовчуванням CPradoViewRenderer буде компілювати вихідні файли представлень і зберігати отримані файли PHP в директорію runtime. PHP-файли змінюються тільки у тому випадку, якщо змінено вихідне представлення. Тому, використання CPradoViewRenderer тягне за собою дуже незначне падіння продуктивності.
Підказка: Незважаючи на те, що CPradoViewRenderer додає новий синтаксис для більш швидкого і зручного опису представлень, ви можете використовувати код PHP також, як і у звичайних представленнях.
Нижче будуть описані конструкції, які підтримуються CPradoViewRenderer.
Скорочені PHP-теги — гарний спосіб скоротити код, який використовується у представленні.
Вираз <%= expression %>
перетворюється у <?php echo expression ?>
.
<% statement %>
— у <?php statement ?>
. Приміром:
<%= CHtml::textField($name,'value'); %>
<% foreach($models as $model): %>
перетворюється у
echo CHtml::textField($name,'value'); foreach($models as $model):
Компонентні теги використовуються для того, щоб вставити у представлення віджет. Синтаксис наступний:
<com:WidgetClass property1=value1 property2=value2 …>
// вміст віджета
</com:WidgetClass>
// віджет без вмісту
<com:WidgetClass property1=value1 property2=value2 …/>
Тут WidgetClass
визначає імʼя класу віджета або
псевдонім шляху.
Початкові значення властивостей можуть бути як рядками, укладеними у лапки,
так і виразами PHP, укладеними у фігурні дужки. Наприклад:
<com:CCaptcha captchaAction="captcha" showRefreshButton={false} />
перетворюється у
$this->widget('CCaptcha', array( 'captchaAction'=>'captcha', 'showRefreshButton'=>false));
Примітка: Значення
showRefreshButton
задано як{false}
замість"false"
так як останнє означає рядок, а не логічне значення.
Кешуючі теги — короткий спосіб використання кешування фрагментів. Синтаксис наступний:
<cache:fragmentID property1=value1 property2=value2 …>
// вміст, який необхідно кешувати
</cache:fragmentID >
Тут fragmentID
— унікальний ідентифікатор кешувального обʼєкта.
Пари імʼя-значення використовуються для налаштування кешування фрагментів. Наприклад:
<cache:profile duration={3600}>
// інформація із профілю користувача
</cache:profile >
буде перетворено у
if($this->beginCache('profile', array('duration'=>3600))): // інформація із профілю користувача $this->endCache(); endif;
Як і кешуючі теги, захоплюючі теги - компактний спосіб використання CBaseController::beginClip та CBaseController::endClip. Синтаксис наступний:
<clip:clipID>
// вміст для захоплення
</clip:clipID >
Тут clipID
— унікальний ідентифікатор захопленого вмісту.
Захоплюючі теги перетворюються таким чином:
$this->beginClip('clipID'); // вміст для захоплення $this->endClip();
Теги коментарів використовуються для написання коментарів, доступних виключно розробникам. Дані теги будуть видалені безпосередньо перед відображенням представлення. Синтаксис наступний:
<!---
Цей коментар буде вирізаний…
--->
Починаючи з версії 1.1.2 можна використовувати одночасно як альтернативний, так і звичайний PHP синтаксис шаблонів.
Для цього необхідно задати властивості обробника шаблонів CViewRenderer::fileExtension значення, відмінне від .php
.
Приміром, якщо воно буде виставлено у .tpl
, то всі шаблони із розширенням .tpl
будуть оброблятися обраним обробником представлень. Шаблони з розширенням .php
, як і раніше, будуть використовувати стандартний синтаксис PHP.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.