Оброблювач шаблонів twig

На сьогоднішній день існує велика кількість способів здійснити виведення на html сторінку. Все частіше і частіше для цих цілей веб розробники користуються так званими шаблонизатор. Сьогодні ми розглянемо невеликий приклад використання шаблонізатора Twig.

Оброблювач шаблонів twig
Оброблювач шаблонів twig

особливості Twig

  • феноменально швидка швидкість роботи (в порівнянні з іншими шаблонизатор)
  • компіляція шаблонів в добре оптимізований PHP код
  • застосування "успадкування" (можна визначити базовий і дочірні шаблони)
  • дозволяє створювати і використовувати макроси

Існує безліч способів установки Twig-a. Найпростіший і швидкий - це скачування компонента з GitHub. після чого архів необхідно розпакувати, і перекинути каталог lib в папку з нашим проектом.

структура проекту

Ну а тепер давайте приступимо до справи і розглянемо структуру нашого невеликого проекту:

Весь функціонал, пов'язаний з підключенням і налаштуванням Twig-а, міститься в файлі index.php.

В папці templates ми будемо зберігати файли шаблонів. У нашому випадку, цих файлів 2: base.html з базовим html кодом і books.html з висновком списку книг.

В каталозі compilation_cache будуть міститися PHP файли, створені Twig-му для роботи.

Підключення і базова конфігурація Twig-a

Отже, перше що нам необхідно зробити, так це підключити Twig:

Після цього повідомляємо шаблонизатор, де у нас зберігаються файли шаблонів. Як аргумент передаємо шлях до каталогу templates:

Потім створюємо об'єкт шаблонізатора і вказуємо ще кілька опцій:

Параметру cache передаємо шлях до каталогу compilation_cache. Активуємо опцію auto_reload, для того щоб при оновленні сторінки Twig заново обробляв шаблони, і ми бачили зміни. Якщо цього не зробити, то шаблонизатор просто закешірует сторінки. Коли ж робота над проектом буде завершена, цю опцію можна прибрати, щоб ваші сторінки закешовану і вантажилися ще швидше.

Для реалізації нашого невеликого прикладу, візьмемо список книг і сформуємо масив виду ключ - значення:

Завантаження файлу і передача даних

Для того щоб передати дані в якийсь шаблон і вивести html результат, нам необхідно скористатися методом render (); Як перший аргумент передаємо назва файлу шаблону, який будемо виводити. В якості другого -Маса виду ключ - значення. Надалі по заданих ключів ми будемо отримувати доступ до нашими даними в самих шаблонах.

Загальний вигляд файлу index.php

Налаштування базового шаблону

Базовий шаблон являє собою звичайний html документ зі спеціальними вставками:

У нашому головному шаблоні ми прописуємо 2 блоки: title і content. Назви блоків вибираємо самі.

Надалі, в ці загальні блоки ми будемо впроваджувати характерну для дочірніх сторінок інформацію.

Налаштування шаблону виведення книг

Для початку в дочірньому шаблоні нам необхідно вказати шаблон батька:

Далі в блок title запишемо назву дочірньої сторінки, яка буде опрацьовано Twig-му і вставиться між тегами title в базовому шаблоні:

Тут же в циклі for (Twig for) ми проходимся по всіх книг, які передали в даний шаблон за допомогою запису $ twig-> render ( 'books.html', array ( 'books' => $ books)); і для вилучення значень звертаємося до елементів масиву по ключам:>,> і так далі.

Приклад роботи даного скрипта ви можете подивитися в demo або скачати архів з готовим прикладом.

5 останніх уроків рубрики "PHP"

Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.

  • Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.

  • Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.

  • Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.

    Привіт, хочу попросити вас зробити більше уроків на тему canvas

  • twig повільніше smarty, а функціонал на 90% 1 і той же. робіть висновки.

    Quber

    Хотілося б ще статей на тему Twig шаблонізатора. Все таки це один з поширених шаблонів, треба знати про нього все. Після того як його вивчиш, можна визначитися, наскільки він зручний і чи варто його використовувати. Для загального розвитку треба такі речі знати. Чекаємо продовжень.

  • Згоден з @Quber. Хотілося б ще статей на тему Twig шаблонізатора, та про інші шаблонизатор не погано було б дізнатися.

  • Володимир Гришин

    продовжуйте тему! ще цікаво чи можна twig використовувати з будь-яким фреймворком? порадьте з чого стартанути. Спасибі вам за пізнавальні статті!

    stanislav.protasevic

    багато шаблонизатор, включаючи twig, можна впровадити як в уже готовий фреймворк, так і в свій. Twig використовується за умовчанням в PHP фреймворке Symfony 2.

  • привіт в симфони він вже в комплекті йде а в Зенде є модуль. так що самі просунуті фреймворки його вже використовують

  • Хотілося б уроку щодо шифрування посилань на об'єкти.

    Quber

    во во, теж цікаво таке! Якраз копаю інформацію, як найбільш правильно, зручно і вигідно розгорнути MVC для php сайту. Було б чудово побачити урок, або якусь інформацію з цього питання. Наперед дякую.

  • Вітаю! У мене таке питання. Встановив на комп (win 8) віртуальний сервер Xampp. Тепер намагаюся встановити Twig, закидаю папку lib в htdocs, прописав все як у вас в прикладі. Але нічого не працює, підкажіть будь ласка, що я роблю не так. Дуже треба. Дякуємо!

    stas.protasevich

    а исходник уроку у вас працює?

    Ну я ось навіть приклад з цієї сторінки беру і скидаю в htdocs і не працює все одно. Не можу зрозуміти що не так.

    stas.protasevich

    Важко сказати наосліп. Спробуйте зв'яжіться зі мною через соц мережі.

  • Так тема Twig щчень цікава тк саме цей шаблонизатор іспользеут symfony за замовчуванням і zend framework є модуль для підключення. Ті думаю що саме цей шаблонизатор буде якщо не є вже номер 1 Дякую

  • Скажіть, а чи можна всередину twig-шаблону вставити Php-код типу MyClass :: getValue (). Або якщо ми використовуємо для рендеринга Твіг, то ми зобов'язані передавати у в'ю все значення завчасно? Просто не хочеться цілу змінну заздалегідь створювати для таких ось статичних функцій.

    Дмитро Цирульников

    Оброблювач шаблонів twig

    За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!

    Оброблювач шаблонів twig

    Оброблювач шаблонів twig

    Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

    Оброблювач шаблонів twig

    Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

    Оброблювач шаблонів twig

    Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!

    Схожі статті