【发布时间】:2016-06-16 22:42:39
【问题描述】:
我想在模板上始终提供来自请求的变量 ($request->getUri()->getBasePath();)。我该怎么做?使用中间件,而不必将上述内容作为参数传递给渲染器->每次都在所有路由上渲染?
$app->get(...
...
$args['basepath']=$request->getUri()->getBasePath();
return $this->renderer->render($response, 'test.php', $args);
});
更新: 这可以在 php-view 2.1.0 之后完成:
dependencies.php:
$container['renderer'] = function ($c) {
$settings = $c->get('settings')['renderer'];
return new Slim\Views\PhpRenderer($settings['template_path']);
};
中间件.php:
$app->add(function (Request $request, Response $response, callable $next) {
$uri = $request->getUri();
$renderer = $this->get('renderer');
$renderer->addAttribute('uri', $request->getUri());
return $next($request, $response);
});
然后,在模板内部:
<?php
$basePath=$uri->getBasePath();
$rpath=$uri->getPath();
?>
【问题讨论】:
标签: php slim middleware