我可以在每条路由中这样获取和设置$baseUrl
<?php
$app->get('/sign-in', function ($request, $response, $args) {
$uri = $request->getUri();
$baseUrl = $uri->getBaseUrl();
$this->renderer->render($response, 'sign-in.phtml', $args);
});
但是我必须在所有视图的每个路由中设置它。
是否有一种方法,我可以在一个地方设置$baseUrl,并在每个路由/视图中使用它?
当你注册Twig View helper时,也要添加$view['baseUrl']
,这样你就可以在每条路由中使用它:
$container['view'] = function ($c) {
$view = new 'Slim'Views'Twig('templates');
// Instantiate and add Slim specific extension
$basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
$view->addExtension(new Slim'Views'TwigExtension($c['router'], $basePath));
$view['baseUrl'] = $c['request']->getUri()->getBaseUrl();
return $view;
};
在你的Twig文件中,你将使用:
{{ baseUrl }}