На сьогоднішній день існує велика кількість способів здійснити виведення на html сторінку. Все частіше і частіше для цих цілей веб розробники користуються так званими шаблонизатор. Сьогодні ми розглянемо невеликий приклад використання шаблонізатора 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 (). Або якщо ми використовуємо для рендеринга Твіг, то ми зобов'язані передавати у в'ю все значення завчасно? Просто не хочеться цілу змінну заздалегідь створювати для таких ось статичних функцій.
Дмитро Цирульников
За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!
Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!
Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.
Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!