Главная > cakephp, cakephp-plugins > Используем шаблонизатор Twig в CakePHP

Используем шаблонизатор Twig в CakePHP

Есть такой замечательный php-шаблонизатор Twig которым с недавнего времени занимается автор фреймворка Symfony – Fabien Potencier.

По заверениям авторов этот шаблонизатор один из самых быстрых. Сторонние разработчики тоже подтверждают это.

Но речь в посте пойдет не о прелестях Twig, а о том как его можно «прикрутить» к CakePHP.

Порядок действий:

  1. Скачаем плагин cakephp-twig-view с помощью Git или архивом;
  2. Скопируем плагин в каталог /app/plugins/twig_view;
  3. Скачаем сам Twig Git’ом или архивом;
  4. Скачанный Twig необходимо разместить в каталоге /app/plugins/twig_view/vendors;
  5. В AppController’е вашего приложения добавим переменную var $view = ‘TwigView.Twig’;
  6. Установка завершена.

По умолчанию скомпилированные шаблоны сохраняются в каталоге APP/plugins/twig_view/tmp/views (не забыть проверить что каталог доступен для записи), но этот путь можно изменить :

- в bootstrap.php добавим define(‘TWIG_VIEW_CACHE’, ‘/your/cache/path’);

Плагин работает с файлами шаблона имеющими расширение «.tpl», таким образом можно совмещать использование стандартного шаблонизатора (файлы с расширением «.ctp») и Twig.

Пример как может выглядеть ваш default.tpl:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
	{{ html.charset() }}
	<title>{{ 'CakePHP: the rapid development php framework'|trans }}: {{ title_for_layout }}</title>
	{{ html.meta('icon') }}
	{{ html.css('cake.generic') }}
	{{ scripts_for_layout }}
  </head>
  <body>
	<div id="container">
		<div id="header">
			<h1>{{
				html.link('CakePHP: the rapid development php framework'|trans, 'http://cakephp.org')
			}}</h1>
		</div>
		<div id="content">
			{{ session.flash() }}
			{{ content_for_layout }}
		</div>
		<div id="footer">
		{{
			html.image('cake.power.gif', [
				'alt': 'Powered by CakePHP'|trans,
				'url': 'http://cakephp.org'
			])
		}}
		</div>
	</div>
  </body>
</html>
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.