Slim framework 3 php-视图变量
Slim framework 3 php-view variable
我希望请求中的变量($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']);
};
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();
?>
在查看 PhpRenderer 的 the Code 时,您会发现目前无法在 render()
函数之外指定 data
。
您可以创建问题 and/or 提出拉取请求以支持该功能。
PHP-View 的 2.1.0 版现在支持在渲染前设置模板变量。参见 https://github.com/slimphp/PHP-View#template-variables。
我希望请求中的变量($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']);
};
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();
?>
在查看 PhpRenderer 的 the Code 时,您会发现目前无法在 render()
函数之外指定 data
。
您可以创建问题 and/or 提出拉取请求以支持该功能。
PHP-View 的 2.1.0 版现在支持在渲染前设置模板变量。参见 https://github.com/slimphp/PHP-View#template-variables。