Версия Slim

Начнем

Учебное пособие

Концепции

Приложение

Запрос

Ответ

Маршрутизация

Обработка ошибок

Cook book

Дополнения

Вклад в Slim

Шаблоны

У Slim нет слоя представления, такого как традиционные рамки MVC. "view" Slim является ответом HTTP. Каждый тонкий маршрут приложения отвечает за подготовку и возвращение соответствующего объекта ответа PSR 7.

"view" Slim - это ответ HTTP.

Это, как говорится, Slim проект предусматривает Twig-View и PHP-View компоненты, которые помогут вам создать шаблоны для объекта PSR7 Response.
components to help you render templates to a PSR7 Response object.

slim/twig-view Компонент

Компонент Twig-View PHP помогает построить Twig шаблоны в вашем приложении. Этот компонент доступер в Packagist, и его можно установить в Composer следующим образом:

composer require slim/twig-view
Figure 1: Установка slim/twig-view компонента.

Затем вам необходимо зарегистрировать компонент в качестве службы в контейнере Slim, например:

<?php
// Create app
$app = new \Slim\App();

// Get container
$container = $app->getContainer();

// Register component on container
$container['view'] = function ($container) {
    $view = new \Slim\Views\Twig('path/to/templates', [
        'cache' => 'path/to/cache'
    ]);

    // Instantiate and add Slim specific extension
    $basePath = rtrim(str_ireplace('index.php', '', $container['request']->getUri()->getBasePath()), '/');
    $view->addExtension(new Slim\Views\TwigExtension($container['router'], $basePath));

    return $view;
};
Figure 2: Зарегистрируйте компонент slim / twig-view с контейнером.

Примечание: для кеша может быть установлено значение false, чтобы отключить его, см. Также параметр «auto_reload», полезный в среде разработки. Дополнительные сведения см. В разделе Twig environment options

Теперь вы можете использовать slim/twig-view службу компонента внутри маршрута приложения для визуализации шаблона и записать его в объект PSR 7 Response следующим образом:

// Render Twig template in route
$app->get('/hello/{name}', function ($request, $response, $args) {
    return $this->view->render($response, 'profile.html', [
        'name' => $args['name']
    ]);
})->setName('profile');

// Run app
$app->run();
Figure 3: Шаблон Render с тонким / twig-view контейнером.

В этом примере, $this->view вызываемый внутри callback маршрута, является ссылкой на \Slim\Views\Twig экземпляр, возвращаемый службой view контейнера. Метод \Slim\Views\Twig экземпляра render() принимает объект ответа PSR 7 как его первый аргумент, путь шаблона Twig как его второй аргумент и массив переменных шаблона в качестве его последнего аргумента. Метод render() возвращает новый объект PSR 7 Response , чье тело создано шаблоном Twig.

Метод path_for()

Компонентslim/twig-view представляет пользовательскую функцию path_for() шаблона Twig. Вы можете использовать эту функцию для создания полных URL-адресов для любого именованного маршрута в своем Slim-приложении. Функция path_for() принимает два аргумента:

  1. Имя маршрута
  2. Хэш имен заполнителей маршрута и значений замены.

Второй аргумент ключевой должен соответствовать записям шаблонов выбранного маршрута. Это пример шаблона Twig, который рисует URL-адрес ссылки для "profile" с именем route, показанного в примере Slim, описанном выше.


{% raw %}
{% extends "layout.html" %}

{% block body %}
<h1>User List</h1>
<ul>
    <li><a href="{{ path_for('profile', { 'name': 'josh' }) }}">Josh</a></li>
</ul>
{% endblock %}
{% endraw %}

Компонент slim/php-view

PHP-View компонент PHP помогает визуализации шаблонов PHP. Этот компонент доступен в Packagist и может быть установлен с помощью Composer следующим образом:

composer require slim/php-view
Figure 4: Установите компонент slim / php-view.

Чтобы зарегистрировать этот компонент в качестве службы в контейнере Slim App, выполните следующие действия:

<?php
// Create app
$app = new \Slim\App();

// Get container
$container = $app->getContainer();

// Register component on container
$container['view'] = function ($container) {
    return new \Slim\Views\PhpRenderer('path/to/templates/with/trailing/slash/');
};
<figure>
<figcaption>Figure 5: Регистрация компонента slim/php-view с контейнером.</figcaption>
</figure>

Используйте компонент вида для визуализации представления PHP следующим образом:

```php
```php

// Render PHP template in route
$app->get('/hello/{name}', function ($request, $response, $args) {
    return $this->view->render($response, 'profile.html', [
        'name' => $args['name']
    ]);
})->setName('profile');

// Run app
$app->run();
Figure 6: Создайте шаблон с помощью сервиса slim/php-view.

Другие системы шаблонов

Вы не ограничены Twig-View и PHP-View компонентами. Вы можете использовать любую систему шаблонов PHP, при условии, что вы в конечном итоге напишите вывод обработанного шаблона в тело объекта PSR 7 Response.