Slim does not have a view layer like traditional MVC frameworks. Instead,
Slim’s “view” is the HTTP response. Each Slim application route is responsible
for preparing and returning an appropriate PSR 7 response object.
Slim’s “view” is the HTTP response.
That being said, the Slim project provides the Twig-View and
PHP-View components to help you render templates to a PSR7
The slim/twig-view component
The Twig-View PHP component helps you render Twig
templates in your application. This component is available on Packagist, and
it’s easy to install with Composer like this:
Next, you need to register the component as a service on the Slim app’s
container like this:
Note : “cache” could be set to false to disable it, see also ‘auto_reload’ option, useful in development environment. For more information, see Twig environment options
Now you can use the slim/twig-view component service inside an app route
to render a template and write it to a PSR 7 Response object like this:
In this example, $this->view invoked inside the route callback is a reference
to the \Slim\Views\Twig instance returned by the view container service.
The \Slim\Views\Twig instance’s render() method accepts a PSR 7 Response
object as its first argument, the Twig template path as its second argument,
and an array of template variables as its final argument. The render() method
returns a new PSR 7 Response object whose body is the rendered Twig template.
The path_for() method
The slim/twig-view component exposes a custom path_for() function
to your Twig templates. You can use this function to generate complete
URLs to any named route in your Slim application. The path_for()
function accepts two arguments:
A route name
A hash of route placeholder names and replacement values
The second argument’s keys should correspond to the selected route’s pattern
placeholders. This is an example Twig template that draws a link URL
for the “profile” named route shown in the example Slim application above.
The slim/php-view component
The PHP-View PHP component helps you render PHP templates.
This component is available on Packagist and can be installed using
Composer like this:
To register this component as a service on Slim App’s container, do this:
Use the view component to render a PHP view like this:
Other template systems
You are not limited to the Twig-View and PHP-View components. You
can use any PHP template system provided that you ultimately write the rendered
template output to the PSR 7 Response object’s body.