Твиг — современный шаблонизатор для PHP
Twig как шаблонизатор по синтаксису чем-то похож на Smarty и не уступает в гибкости XSLT.
Основные его особенности:
- Быстрый: компилирует шаблоны в PHP код. Добавочный, относительно нативного PHP, код был сведен к минимуму.
- Безопасный: есть режим «песочницы» для проверки сомнительного кода в шаблонах. Это позволяет использовать Twig в качестве языка шаблонов для приложений, где пользователи могут менять дизайн шаблонов.
- Гибкий: основан на пластичном лексере и парсере. Это позволяет разработчику определять свои собственные тэги и фильтры, создавать свой DSL.
Зачем нужен еще один шаблонизатор?
Twig использует гибко настраиваемые лексический и грамматический анализаторы. Это позволяет разработчику определять свои теги и фильтры, создавать собственный DSL.
- Краткость: Язык PHP многословен и даже слишком многословен, когда нужно экранировать вывод данных: echo $var; echo htmlspecialchars($var, ENT_QUOTES, ‘UTF-8’);
- Twig имеет более лаконичный синтаксис, который позволяет легко читать шаблоны: >>>
- Ориентированный на шаблоны синтаксис: Twig имеет сокращения для многих общих паттернов, например, отображение текста по умолчанию, если вы перебираете пустой массив: * >Пользователи не найдены.
- Полнофункциональный: поддерживает все, что необходимо для использования шаблонов: множественное наследование, блоки, автоматическое экранирование и многое другое: Содержимое страницы.
- Легок в изучении: Синтаксис прост в изучении и оптимален для верстальщиков, что позволяет им быстро выполнять свою работу.
Конечно, для PHP написано большое число шаблонизаторов. Но большинство из них написаны под PHP4 и не используют лучшие практики разработки:
- Расширяемость: Твиг это гибкий движок для любых ваших потребностей, даже самых сложных. Благодаря открытой архитектуре, вы можете определять новые языковые конструкции (тэги и фильтры) для создания своего собственного DSL.
- Юнит-тестирование: Твиг полностью покрыт тестами. Библиотека стабильна и готова к использованию в больших проектах.
- Документация: Tвиг полностью документирован, вся документация доступна на сайте, и, конечно, имеет полное описание API.
- Безопасность: В отношении безопасности, имеется несколько совершенно уникальных особенностей:
- Автоматическое экранирование вывода: Для безопасного вывода данных, вы можете включить экранирование как глобально, так и для отдельных блоков: .
- Песочница: Twig позволяет использовать для любого шаблона «песочницу», где пользователи имеют ограниченный набор тэгов, фильтров и методов объектов, определенных разработчиком. Режим «песочницы» может быть включен как глобально, так и локально, для определенных шаблонов: >
Кто создал Twig?
Twig написан Fabien Potencier, создателем фреймворка Symfony и распространяется по новой лицензии BSD.
Вступление#
Добро пожаловать в документацию по Twig, гибкому, быстрому и безопасному шаблонизатору для PHP.
Twig удобен как для дизайнеров, так и для разработчиков, поскольку придерживается принципов PHP и добавляет функциональность, полезную для создания сред шаблонов.
- Быстро: Twig компилирует шаблоны в простой оптимизированный PHP-код. Накладные расходы по сравнению с обычным кодом PHP были сведены к минимуму.
- Безопасность: Twig имеет режим песочницы для оценки ненадежного кода шаблона. Это позволяет использовать Twig в качестве языка шаблонов для приложений, где пользователи могут изменять дизайн шаблона.
- Гибкость: Twig основан на гибком лексическом и синтаксическом анализаторе. Это позволяет разработчику определять свои собственные теги и фильтры, а также создавать свои собственные DSL.
Twig используется многими проектами с открытым исходным кодом, такими как Symfony, Drupal8, eZPublish, phpBB, Matomo, OroCRM; и многие фреймворки также поддерживают его, например Slim, Yii, Laravel и Codeigniter — и это лишь некоторые из них.
Хотите учиться на видеоуроках? Ознакомьтесь с учебным пособием по Twig!
Совместимость#
Для работы Twig 3.x требуется как минимум PHP 7.2.5.
Установка#
Рекомендуемый способ установки Twig через Composer:
composer require "twig/twig:^3.0"Базовое использование API#
В этом разделе дается краткое введение в PHP API для Twig:
require_once '/path/to/vendor/autoload.php'; $loader = new \Twig\Loader\ArrayLoader([ 'index' => 'Hello >!', ]); $twig = new \Twig\Environment($loader); echo $twig->render('index', ['name' => 'Fabien']);Twig использует загрузчик ( \Twig\Loader\ArrayLoader ) для поиска шаблонов и окружение ( \Twig\Environment ) для хранения своей конфигурации.
Метод render() загружает шаблон, переданный в качестве первого аргумента и отображает его с переменными, переданными в качестве второго аргумента.
Поскольку шаблоны обычно хранятся в файловой системе Twig также поставляется с загрузчиком файловой системы:
$loader = new \Twig\Loader\FilesystemLoader('/path/to/templates'); $twig = new \Twig\Environment($loader, [ 'cache' => '/path/to/compilation_cache', ]); echo $twig->render('index.html', ['name' => 'Fabien']);Как добавить php код в twig шаблонизатор
Есть сайт на symfony, который использует twig шаблонизатор. Внутри twiga нельзя писать пхп код, а это очень нужно. Заменить его теми функциями что есть в twig нельзя. Ведь это не что-то нестандартное, должен быть простой способ выполнить пхп и выдать результат в шаблон. Есть:
abstract class BaseContentController extends BaseController < // . public function loadUrlPageAction($url) < $page = $this->getContentService()->getPageByUrl($url); return $this->returnPage($page); > // . >возможно тут что-то надо изменить? Что в PHP: Там находится класс, который берёт имя домена и урл и отправляет посредством fsockopen() на удалённый сервер. Думаю, твигом такое сделать нельзя.
UPD: Хочу сделать для этого сервис.
В файле /Resources/config/services.yml :services: # Расширения Twig'a twig.rsr_extension: class: Site\RsrSecurityBundle\Twig\RsrSecurityExtension arguments: ["@translator"] tags: - < name: twig.extension >rsr.content: class: Site\RsrSecurityBundle\Service\RsrContentService parent: submarine.content calls: - [setPaginator, ["@knp_paginator"]] rsr.sendurl: class: Site\RsrSecurityBundle\Service\RsrNwlSystem tags: -
rsr.sendurl мой добавленный сервис.
По пути Site\RsrSecurityBundle\Service\RsrNwlSystem.php находится мой класс. Как тут указать ключ сервиса, чтобы им воспользоваться в классе вывода основного контента на страницу.Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Документация по шаблонизатору Twig на русском языке
ruden/twig-docs-ru
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to showName already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit timeREADME.md
Twig это современный шаблонизатор для PHP
- Быстрый: Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.
- Безопасный: Twig имеет режим «песочницы» для оценки «ненадежного» кода в шаблонах. Это позволяет использовать Twig в приложениях, где пользователи могут менять содержимое шаблонов.
- Гибкий: Twig использует гибко настраиваемые лексический и грамматический анализаторы. Это позволяет разработчику определять свои теги и фильтры, создавать собственный DSL.
Что делает Twig лучше PHP в качестве шаблонизатора?
Когда дело доходит до шаблонизаторов в PHP, многие люди скажут вам, что сам PHP является шаблонизатором. Но даже если PHP начал свою жизнь как язык шаблонов, он не развивался так, как в последние годы. На самом деле, он не поддерживает многие функции, которые должны иметь современные шаблонизаторы:
- Краткость:Язык PHP многословен и даже слишком многословен, когда надо экранировать вывод данных::
echo $var ?> echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>Twig имеет более лаконичный синтаксис, который позволяет легко читать шаблоны:
var >> var|escape >> var|e >> сокращение для escape #>
- Ориентированный на шаблоны синтаксис:Twig имеет сокращения для многих общих паттернов, например, отображение текста по умолчанию, если вы перебираете пустой массив:
for user in users %> * user.name >> else %> Пользователи не найдены. endfor %>
- Полнофункциональный:Twig поддерживает все, что вам надо для использования шаблонов: множественное наследование, блоки, автоматическое экранирование и многое другое:
extends "layout.html" %> block content %> Содержимое страницы. endblock %>
- Легок в изучении:Синтаксис просто изучить и оптимален для верстальщиков, что позволяет им быстро выполнять свою работу.
Конечно, для PHP написано большое число шаблонизаторов. Но большинство из них написаны под PHP и не используют лучшие практики разработки:
- Расширяемость: Twig — гибкий движок для любых ваших потребностей, даже самых сложных. Благодаря открытой архитектуре, вы можете определять новые языковые конструкции (тэги и фильтры) для создания своего собственного DSL.
- Юнит-тестирование: Twig полностью покрыт тестами. Библиотека стабильна и готова к использованию в больших проектах.
- Документация: Twig полностью документирован, вся документация доступна на сайте, и, конечно, имеет полное описание API.
- Безопасность: В отношении безопасности, Twig имеет несколько совершенно уникальных особенностей:
- Автоматическое экранирование вывода: Для безопасного вывода данных, вы можете включить экранирование как глобально, так и для отдельных блоков:
autoescape on %> var %> var|safe %> var не экранируется #> var|escape %> var не экранируется дважды #> endautoescape %>
- Песочница: Twig позволяет использовать для любого шаблона «песочницу», где пользователи имеют ограниченный набор тэгов, фильтров и методов объектов, определенных разработчиком. Режим «песочницы» может быть включен как глобально, так и локально, для определенных шаблонов:
include "user.html" sandboxed >>
- Чистые сообщения об ошибках: Каждый раз, когда у вас возникают синтаксические ошибки в шаблоне, Twig выводит сообщение о имени файла с ошибкой и номере строки, которая ее вызвала. Это очень упрощает отладку.
- Быстрый: Одна из целей создания Twig — сделать его таким быстрым как только можно. Для достижения максимальной скорости работы, Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.
About
Документация по шаблонизатору Twig на русском языке
