Наткнувшись однажды на пост Как возникают автомобильные пробки, решил подробнее посмотреть, что же из себя представляет 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