Php 苗条/细枝视图赢得';不能使用其他路由中间件

Php 苗条/细枝视图赢得';不能使用其他路由中间件,php,twig,slim-4,Php,Twig,Slim 4,我一直在使用slim/twig视图,记录如下:。处理管线、渲染视图的建议方法是: $app->get('/hello/{name}', function ($request, $response, $args) { $view = Twig::fromRequest($request); return $view->render($response, 'profile.html', [ 'name' => $args['name'] ])

我一直在使用slim/twig视图,记录如下:。处理管线、渲染视图的建议方法是:

$app->get('/hello/{name}', function ($request, $response, $args) {
    $view = Twig::fromRequest($request);
    return $view->render($response, 'profile.html', [
        'name' => $args['name']
    ]);
})
问题是,若您尝试添加任何基于路由的中间件以在之后运行,它将失败

$app->get('/hello/{name}', function ($request, $response, $args) {
    $view = Twig::fromRequest($request);
    return $view->render($response, 'profile.html', [
        'name' => $args['name']
    ]);
})->add(function(Request $request, RequestHandler $handler){
    $response = $handler->handle($request);
    return $response;
});
出现如下错误:

Type: TypeError
Code: 0
Message: Return value of Slim\Handlers\Strategies\RequestResponse::__invoke() must implement interface Psr\Http\Message\ResponseInterface, int returned
File: /var/www/html/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php
Line: 43
我知道这是因为我没有从路由处理程序返回响应,所以我重写了路由处理程序以返回$response:

 $view = Twig::fromRequest($request);
    $view->render($response, 'profile.html', [
        'name' => $args['name']
    ]);
    return $response;
还是一样的错误


我可以解决这个问题,但这是一个全新的项目,如果能够访问route中间件就好了。有什么想法吗?

Mhm,通常在Symfony上你
return$view->render(…)
这也是他们在文档页面上所做的你在这里链接看起来也是正确的:
public function render(ResponseInterface$response,string$template,array$data=[]):ResponseInterface
如果你不将两者链接起来,你会遇到同样的问题吗?e、 g.
$app->get(…)$应用程序->添加(…)这只是当我链接时才使用。我喜欢twig在这里的使用方式Mhm,通常在Symfony上你
return$view->render(…)
这也是他们在文档页面上所做的你在链接这里看起来也是如此:
public function render(ResponseInterface$response,string$template,array$data=[]):ResponseInterface
如果不将两者链接起来,是否存在相同的问题?e、 g.
$app->get(…)$应用程序->添加(…)只有当我用链子拴住的时候。我喜欢这里用树枝的方式