Php і twig створення шаблонів веб сторінок

Php і twig створення шаблонів веб сторінок

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

Багато PHP фреймворкі, включаючи: Zend Frameworkd, Agavi, CackPHP і CodeIgniter, по-своєму реалізують поділ бізнес логіки і виведення даних. Однак, якщо ви не любите фреймворкі або ваш проект занадто малий для їх використання, то ви можете скористатися якоюсь окремою системою побудови шаблонів. На щастя, нам є з чого вибирати. Smartym Savant, Dwoo. цей список можна продовжувати і продовжувати, однак в цій статті я покажу вам, як працювати з шаблонізатором Twig.

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

Перш ніж приступити безпосередньо до справи, давайте розберемося з принципом роботи шаблонизатор. Звичайне PHP додаток складається з цілого набору сторінок, які включають в себе як статичний HTML код (меню, списки, зображення і т.д.), так і динамічний контент (висновок даних з БД, xml файлу, сервіси, ...). За допомогою Twig ми можемо розділити дані процеси, створюючи шаблони зі спеціальними маркерами, замість яких в подальшому буде вставлятися динамічний контент.

Значення для даних маркерів формуються в основному PHP скрипт; там же відбувається спілкування з базою даних, xml парсинг та інші всілякі операції. Таким чином, ваша сторінка буде будуватися на основі 2х джерел: шаблону з спеціальними вставками і PHP скриптів, де ми зберігаємо основний функціонал. Це дає можливість PHP розробникам і дизайнерам одночасно працювати над одними і тими ж сторінками.

Приступаємо до справи

Для того щоб подивитися, як працює Twig, пропоную розглянути простий приклад:

Збережіть даний файл templates / thanks.tmpl. Зверніть увагу на те, що всі маркери, що представляють собою змінні, поміщені в подвійні фігурні дужки. Подібна запис підкаже Twig-у, де і як здійснювати вставку даних.

Потім, нам необхідно створити основний скрипт, де буде відбуватися формування змінних і даних:

В результаті, якщо ви відкриєте цю сторінку в браузері, то побачите наступне:

Php і twig створення шаблонів веб сторінок

Для використання Twig-а, вам потрібно пройти наступні кроки:

  1. Ініціалізувати авто-завантажувач Twig-а, для того щоб класи шаблонізатора довантажувати автоматично.
  2. Ініціалізувати завантажувач шаблонів. У нашому випадку пов Twig_Loader_FileSystem. Як аргумент передаємо шлях до каталогу з шаблонами.
  3. Створити об'єкт самого Twig і передати йому вже сконфігуровані настройки.
  4. Довантажити потрібний нам шаблон за допомогою методу loadTemplate, передавши в нього назва використовуваного шаблону. Як результат метод поверне примірник шаблону.
  5. Сформувати масив виду "ключ-значення", де ключі - це назви змінних, а значення - дані, що виводяться в шаблоні. Потім цей масив потрібно передати в метод render (), який поєднає шаблон з переданими даними і поверне згенерований результат.

Twig також надає нам можливість створювати умовні вирази 'if-else-endif'. приклад:

Залежно від числа, яке генерується в основному PHP скрипт, шаблон відобразить одне з двох повідомлень. Ось і скрипт, де генерується число від 0 до 30 і перевіряється на парність:

а ось і результат:

Також ми можемо зробити багаторівневі перевірки 'if-elseif-else-endif'. приклад:

А ось і скрипт, де ми генеруємо номер місяця і передаємо його в шаблон:

Twig також підтримує цикл 'for'. Він дуже зручний, якщо нам необхідно пройтися по масиву. приклад:

В даному прикладі у нас простій не асоціативний масив. На кожній ітерації ми будемо отримувати по одному елементу і виводити його в елементі списку. Ось і скрипт:

Php і twig створення шаблонів веб сторінок

Для того щоб пройтися по асоціативному масиву, ми можемо звертатися до ключів через "точку". приклад:

Для того щоб достукатися до значень масиву в шаблоні, спочатку пишемо ім'я змінної, в якій зберігається сам масив. Потім ставимо крапку і пишемо назву ключа, за яким дістаємо дані:

Php і twig створення шаблонів веб сторінок

Такий же підхід може бути застосований для роботи з об'єктами.

дамп даних

Безумовно цикли вам стати в нагоді при виведенні даних з БД. приклад:

У наступному фрагменті коду я використовую PDO підключення до MySQL базі даних 'world'. Якщо ви хочете спробувати цей приклад, то вам потрібно сформувати базу самим:

Тут варто відзначити кілька речей:

Ми використовуємо метод getchObject (), який поверне нам рядки з таблиці у вигляді об'єктів. Назви полів будуть відповідати назвам колонок. Потім ці об'єкти ми поміщаємо в масив і передаємо його в шаблон. У шаблоні, використовуємо цикл і виводимо дані.

В даному прикладі також використовується вбудований в Twig фільтр `escape`. За замовчуванням цей фільтр користується функцією htmlspecialchars () для фільтрування даних. Це непогана захист від XSS атак.

вантаження шаблонів

Для демонстрації уявіть, що даний код - це головний шаблон:

Всі секції даної сторінки знаходяться в окремих файлах і підключаються сюди за допомогою команди `include`. Давайте подивимося, як виглядають підключаються файли:

А ось і головний PHP скрипт:

Зверніть увагу, що нам не потрібно завантажувати всі шаблони функцією loadTemplate. Головне підключити основний шаблон. Кожен дрібний під-шаблон завантажиться автоматично. Змінні і значення, передані в головний шаблон, будуть доступні у всіх підключаються шаблонах.

Php і twig створення шаблонів веб сторінок

фільтрація даних

У даній статті ми вже торкнулися теми фільтрів. Давайте подивимося, які ще можливості в цій сфері надає нам Twig.

Давайте розглянемо, наприклад, фільтр 'date'. Даний фільтр дає нам можливість формувати дату і час, використовуючи нативні для PHP маркери. приклад:

Також ви можете скористатися фільтрами `upper`,` lower`, `capitalize`,` title` для контролю великих і великих літер:

Фільтр `striptags` прибере з тексту все HTML і XML елементи:

Фільтр `replace` дозволяє швидко і просто замінювати якісь значення в рядку на потрібні нам. приклад:

Ви вже бачили фільтр `escape` в дії. У Twig також є фільтр, який робить абсолютно протилежний ефект - `raw`. Його слід використовувати тільки для html коду, який ви вважаєте 100% безпечним.

Якщо ж вам потрібно застосувати `escape` до великого блоку коду, то ви можете скористатися синтаксисом` autoescape`, передавши логічне значення true / false для активації і дезактивації фільтрації `escape`. приклад:

Тепер ви вже більше знаєте про Twig-e і можете використовувати умови, цикли і фільтри.

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

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

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

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

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

    Вже краще б почали розбирати Symfony 2, раз пішла така п'янка. Там і twig б торкнулися, і doctrine і ще безліч прекрасних компонентів цього чудового фреймворку. Правда тоді уроки типу "Будуємо свою CMS на PHP і MySQL" здавалися б кілька дурнуватими, але якщо вже допомагати передплатникам в освоєнні інструментів розробки, то якісно новий рівень був би корисний багатьом.

    Згоден що тема Symfony 2 цікава і варта уваги. Однак не треба забувати що Twig це абсолютно самостійний інструмент. Користувачам можуть бути корисні приклади роботи тільки з ним. Якісне вивчення ділиться на порції.

    Згоден з вами. Twig, як і практично будь-який компонент symfony, самостійний. Я і запропонував піти шляхом "від зворотного". Розібравши Symfony 2 - розбереш і кожен, дуже цінний, компонент. Хоча "проковтнути" symfony цілком не кожному по-силам і, можливо, підхід руселлера більш адекватний. Сподіваюся Twig не останній розібраний компонент Symfony.

  • Був би дуже вдячний, якщо зробили б приклад з використанням пхп, який повинен вносити щось в бд. тому до сих пір не розумію як зв'язати пхп і Твіг :(

    Php і twig створення шаблонів веб сторінок

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

    Php і twig створення шаблонів веб сторінок

    Php і twig створення шаблонів веб сторінок

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

    Php і twig створення шаблонів веб сторінок

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

    Php і twig створення шаблонів веб сторінок

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

    Схожі статті