首页 > 解决方案 > Slim 4 从中间件分配树枝参数

问题描述

我正在尝试将我的网站代码从 Slim v2 升级到 v4。我不是铁杆程序员,所以我面临问题。在 Slim v2 中,我有一些中间件,可以在执行路由代码之前将参数分配给 Twig 视图。现在我正在尝试使用 Slim v4 进行相同的管理,但没有成功。

我有一个容器:

$container = new \DI\Container();

我有这样的看法:

$container->set('view', function(\Psr\Container\ContainerInterface $container) {
    return Twig::create(__DIR__ . '/views');
});

我尝试从中间件使用它:

$this->get('view')->offsetSet('fbloginurl', $loginUrl); 

但是当视图呈现时没有附加任何内容。

如果我尝试从内部路线使用相同的,它的工作正常。

示例路线:

$app->get('/', function ($request, $response, $args) {
   
    $params = array(...);
    return $this->get('view')->render($response, 'index.html', $params);
});

标签: phptwigslim

解决方案


有两种可能的故障。首先,DI 容器可能总是返回一个新实例,因此它不会将变量存储在正确的实例中,并且它们不会在 twig 模板中呈现。其次,您在路线示例中使用了不同的方法。您通过变量传递$params变量,并通过这种方式将它们提供给模板。

因此,您可以将变量存储$this->get('view')在变量中或将变量作为$params.

编辑:您还可以检查 DI\Container 中的变量是否已经存在,然后返回实例。


推荐阅读