我希望在模板上始终有一个来自请求的变量($request->getUri()->getBasePath();)。我如何做到这一点,例如,使用中间件,而不必将上面的参数传递给呈现器->每次在所有路由上呈现?
$app->get(...
...
$args['basepath']=$request->getUri()->getBasePath();
return $this->renderer->render($response, 'test.php', $args);
});更新:这可以在php 2.1.0之后完成,如下所示:
dependencies.php:
$container['renderer'] = function ($c) {
$settings = $c->get('settings')['renderer'];
return new Slim\Views\PhpRenderer($settings['template_path']);
};middleware.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();
?>发布于 2016-03-03 14:41:03
在查看“守则”的PhpRenderer时,您将看到目前没有办法在render()函数之外指定data。
您可以创建一个问题和/或发出一个拉请求来支持该功能。
发布于 2016-03-04 09:51:37
PHP的2.1.0版本现在支持在呈现之前设置模板变量.见https://github.com/slimphp/PHP-View#template-variables。
https://stackoverflow.com/questions/35775010
复制相似问题