Templates
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 Response object.
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:
1 | composer require slime/twig-view |
Next, you need to add the slim/twig-view middleware to the Slim app:
1 |
|
Note : For production scenarios, cache should be set to some ‘path/to/cache’ to store compiled templates (thus avoiding recomplication on every request). 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:
1 | app->get('/hello/{name}', function ($request, $response, $args) { |
In this example, $view invoked inside the route callback is a reference to the \Slim\Views\Twig instance returned by the fromRequest method. 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 url_for() method
The slim/twig-view component exposes a custom url_for() function to your Twig templates. You can use this function to generate complete URLs to any named route in your Slim application. The url_for() function accepts two arguments:
1 | 1.A route name |
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.
1 | {% extends "layout.html" %} |
实例:
app/routes.php
1 | // 云手机相关routes |
TemplateController.php
1 |
|