Альтернативна мова шаблонів
Yii дозволяє розробнику використовувати свою улюблену мову шаблонів (наприклад, Prado або Smarty) для опису представлень контролера або віджету. Для цього потрібно написати і встановити свій компонент viewRenderer. Обробник представлення перехоплює виклики CBaseController::renderFile, компілює файл представлення з альтернативним синтаксисом і віддає результат компіляції.
Інформація: Не рекомендується використовувати альтернативний синтаксис шаблонів для опису представлень компонентів, які викладаються у відкритий доступ. Це призведе до вимоги використовувати той же синтаксис, що використовується у представленні компонента.
Далі ми покажемо, як використовувати CPradoViewRenderer — обробник представлень, що дозволяє розробнику використовувати синтаксис шаблонів, який використовується у фреймворку Prado. Якщо ви хочете реалізувати свої обробники представлень, обовʼязково ознайомтеся із CPradoViewRenderer.
Використання CPradoViewRenderer
Для використання CPradoViewRenderer необхідно налаштувати додаток наступним чином:
За замовчуванням CPradoViewRenderer буде компілювати вихідні файли представлень і зберігати отримані файли PHP в директорію runtime. PHP-файли змінюються тільки у тому випадку, якщо змінено вихідне представлення. Тому, використання CPradoViewRenderer тягне за собою дуже незначне падіння продуктивності.
Підказка: Незважаючи на те, що CPradoViewRenderer додає новий синтаксис для більш швидкого і зручного опису представлень, ви можете використовувати код PHP також, як і у звичайних представленнях.
Нижче будуть описані конструкції, які підтримуються CPradoViewRenderer.
Скорочені PHP-теги
Скорочені PHP-теги — гарний спосіб скоротити код, який використовується у представленні.
Вираз <%= expression %>
перетворюється у <?php echo expression ?>
.
<% statement %>
— у <?php statement ?>
. Приміром:
перетворюється у
Компонентні теги
Компонентні теги використовуються для того, щоб вставити у представлення віджет. Синтаксис наступний:
Тут WidgetClass
визначає імʼя класу віджета або
псевдонім шляху.
Початкові значення властивостей можуть бути як рядками, укладеними у лапки,
так і виразами PHP, укладеними у фігурні дужки. Наприклад:
перетворюється у
Примітка: Значення
showRefreshButton
задано як{false}
замість"false"
так як останнє означає рядок, а не логічне значення.
Кешуючі теги
Кешуючі теги — короткий спосіб використання кешування фрагментів. Синтаксис наступний:
Тут fragmentID
— унікальний ідентифікатор кешувального обʼєкта.
Пари імʼя-значення використовуються для налаштування кешування фрагментів. Наприклад:
буде перетворено у
Захоплюючі теги
Як і кешуючі теги, захоплюючі теги - компактний спосіб використання CBaseController::beginClip та CBaseController::endClip. Синтаксис наступний:
Тут clipID
— унікальний ідентифікатор захопленого вмісту.
Захоплюючі теги перетворюються таким чином:
Теги коментарів
Теги коментарів використовуються для написання коментарів, доступних виключно розробникам. Дані теги будуть видалені безпосередньо перед відображенням представлення. Синтаксис наступний:
Одночасне використання шаблонів різного формату
Починаючи з версії 1.1.2 можна використовувати одночасно як альтернативний, так і звичайний PHP синтаксис шаблонів.
Для цього необхідно задати властивості обробника шаблонів CViewRenderer::fileExtension значення, відмінне від .php
.
Приміром, якщо воно буде виставлено у .tpl
, то всі шаблони із розширенням .tpl
будуть оброблятися обраним обробником представлень. Шаблони з розширенням .php
, як і раніше, будуть використовувати стандартний синтаксис PHP.