- PVSM.RU - https://www.pvsm.ru -

Краткая инструкция по интеграции шаблонизатора Twig и Slim Micro Framework

Наткнувшись однажды на пост Как возникают автомобильные пробки [1], решил подробнее посмотреть, что же из себя представляет Slim Micro Framework [2] и как я могу его использовать в своих проектах.

Первым делом надо было выбрать шаблонизатор. После недолгих поисков, выбор пал на Twig [3] и теперь можно приступать к интеграции.

Суть интеграции заключается в подключении дополнения Slim Framework Extras [4], реализующего функционал для интеграции с несколькими популярными шаблонизаторами, в частности с Twig, через расширение базового класса Slim_View [5], написанное разработчиками фреймворка.

Теперь необходимо включить код в проект, файл index.php (расположение и имена файлов могут отличаться):

//Require the Slim Framework
require_once 'Slim/Slim.php';

//http://twig.sensiolabs.org/doc/intro.html#basic-api-usage
require_once 'thirdparty/Twig/Autoloader.php';
Twig_Autoloader::register();

//Require the custom View
require_once 'views/TwigView.php';

//Init Slim app with the custom View
$app = new Slim(array(
    'view' => new TwigView()
));

$app->run();

Передача параметров в View осталась неизменной. Пример роутера и callback-функции для него, использованного в приложении (код местами упрощен):

// Определяем роутер
$app->get('/:id', 'show_gallery');

/**
 * Callback-функция для роутера
 *
 * @global Slim $app
 * @param <type> $flickr_photo_id
 */

function show_gallery( $photo_id ) {
  global $app;

  // Ваш код
  ...

  // Передаем параметры в шаблон
  $app->view()->appendData( array( 'photo' => $photo ) );

  // Отрисовываем шаблон
  // по умолчанию файлы шаблонов находятся в папке /templates в корне вашего проекта
  $app->render('template.php');
}

Пример части кода из шаблона template.php:

...
<div class="container">
  <a href="{{ photo.l_url }}" class="ajax" title="{{ photo.title }}">
    <img class="current" src="{{ photo.m_url }}" alt="{{ photo.title }}" />
  </a>
</div>
...

Материалы по теме:

Простую реализацию связки Slim Framework Extras + Twig можно посмотреть тут Постеры на тему АСОИУ [6]. При необходимости готов продемонстрировать весь код (всего сто строк описывающих логику приложения).

Заранее приношу извинения за возможные допущенные ошибки и упущения при написании поста. Это моя первая статья. На освоение материала ушло всего пару дней, поэтому сочту за любезность любые полезные ссылки на материалы и советы по теме. Спасибо.

Автор: lebster


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/shablonizator/4225

Ссылки в тексте:

[1] Как возникают автомобильные пробки: http://habrahabr.ru/post/139764/

[2] Slim Micro Framework: http://www.slimframework.com/

[3] Twig: http://twig.sensiolabs.org/

[4] дополнения Slim Framework Extras: https://github.com/codeguy/Slim-Extras

[5] расширение базового класса Slim_View: http://www.slimframework.com/documentation/stable#custom-views

[6] Постеры на тему АСОИУ: http://posters.asoiu.com/