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.A route name
2.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.
1 | {% extends "layout.html" %} |
实例:
app/routes.php
1 | // 云手机相关routes |
TemplateController.php
1 |
|