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

в 11:13, , рубрики: slim, twig, Веб-разработка, шаблонизатор, метки: , ,

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

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

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

Теперь необходимо включить код в проект, файл 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 можно посмотреть тут Постеры на тему АСОИУ. При необходимости готов продемонстрировать весь код (всего сто строк описывающих логику приложения).

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

Автор: lebster

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js