Альтернативна мова шаблонів

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.