Як правило, всі шаблонизатор схожі один на одного і розрізняються тільки якимись специфічними особливостями і деталями. Головне завдання шаблонизатор - розділити бізнес логіку програми та виведення даних на сторінку, таким чином, дозволивши розробникам і дизайнерам працювати одночасно, не капая один одному на мізки.
Багато 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-у, де і як здійснювати вставку даних.
Потім, нам необхідно створити основний скрипт, де буде відбуватися формування змінних і даних:
В результаті, якщо ви відкриєте цю сторінку в браузері, то побачите наступне:
Для використання Twig-а, вам потрібно пройти наступні кроки:
- Ініціалізувати авто-завантажувач Twig-а, для того щоб класи шаблонізатора довантажувати автоматично.
- Ініціалізувати завантажувач шаблонів. У нашому випадку пов Twig_Loader_FileSystem. Як аргумент передаємо шлях до каталогу з шаблонами.
- Створити об'єкт самого Twig і передати йому вже сконфігуровані настройки.
- Довантажити потрібний нам шаблон за допомогою методу loadTemplate, передавши в нього назва використовуваного шаблону. Як результат метод поверне примірник шаблону.
- Сформувати масив виду "ключ-значення", де ключі - це назви змінних, а значення - дані, що виводяться в шаблоні. Потім цей масив потрібно передати в метод render (), який поєднає шаблон з переданими даними і поверне згенерований результат.
Twig також надає нам можливість створювати умовні вирази 'if-else-endif'. приклад:
Залежно від числа, яке генерується в основному PHP скрипт, шаблон відобразить одне з двох повідомлень. Ось і скрипт, де генерується число від 0 до 30 і перевіряється на парність:
а ось і результат:
Також ми можемо зробити багаторівневі перевірки 'if-elseif-else-endif'. приклад:
А ось і скрипт, де ми генеруємо номер місяця і передаємо його в шаблон:
Twig також підтримує цикл 'for'. Він дуже зручний, якщо нам необхідно пройтися по масиву. приклад:
В даному прикладі у нас простій не асоціативний масив. На кожній ітерації ми будемо отримувати по одному елементу і виводити його в елементі списку. Ось і скрипт:
Для того щоб пройтися по асоціативному масиву, ми можемо звертатися до ключів через "точку". приклад:
Для того щоб достукатися до значень масиву в шаблоні, спочатку пишемо ім'я змінної, в якій зберігається сам масив. Потім ставимо крапку і пишемо назву ключа, за яким дістаємо дані:
Такий же підхід може бути застосований для роботи з об'єктами.
дамп даних
Безумовно цикли вам стати в нагоді при виведенні даних з БД. приклад:
У наступному фрагменті коду я використовую PDO підключення до MySQL базі даних 'world'. Якщо ви хочете спробувати цей приклад, то вам потрібно сформувати базу самим:
Тут варто відзначити кілька речей:
Ми використовуємо метод getchObject (), який поверне нам рядки з таблиці у вигляді об'єктів. Назви полів будуть відповідати назвам колонок. Потім ці об'єкти ми поміщаємо в масив і передаємо його в шаблон. У шаблоні, використовуємо цикл і виводимо дані.
В даному прикладі також використовується вбудований в Twig фільтр `escape`. За замовчуванням цей фільтр користується функцією htmlspecialchars () для фільтрування даних. Це непогана захист від XSS атак.
вантаження шаблонів
Для демонстрації уявіть, що даний код - це головний шаблон:
Всі секції даної сторінки знаходяться в окремих файлах і підключаються сюди за допомогою команди `include`. Давайте подивимося, як виглядають підключаються файли:
А ось і головний PHP скрипт:
Зверніть увагу, що нам не потрібно завантажувати всі шаблони функцією loadTemplate. Головне підключити основний шаблон. Кожен дрібний під-шаблон завантажиться автоматично. Змінні і значення, передані в головний шаблон, будуть доступні у всіх підключаються шаблонах.
фільтрація даних
У даній статті ми вже торкнулися теми фільтрів. Давайте подивимося, які ще можливості в цій сфері надає нам 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.
Був би дуже вдячний, якщо зробили б приклад з використанням пхп, який повинен вносити щось в бд. тому до сих пір не розумію як зв'язати пхп і Твіг :(
За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!
Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!
Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.
Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!