苗条的框架如何设置$baseURL为所有视图使用


Slim Framework 3. How to set $baseURL for all views to use?

我可以在每条路由中这样获取和设置$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 }}