1 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
在這種情況下,問題在于這一行為所有路由注冊(cè)了中間件:
$app->add(function($request, $response, $next) use ($middlewareFunction) {
為單個(gè)路由注冊(cè)中間件的工作方式如下:
$this->get('/', \App\Action\HomeIndexAction::class)
->add(MyMiddleware::class);
我會(huì)嘗試像這樣更改您的代碼:
<?php
use Slim\App;
use Slim\Http\Request;
use Slim\Http\Response;
return function (App $app) {
$routesFile = file(__DIR__ . '/routes.cfg');
foreach ($routesFile as $fileLine) {
$fileLine = str_replace("\n", '', $fileLine);
$fileLine = preg_replace('/\s+/', ' ', $fileLine);
$args = explode(' ', $fileLine);
if (strpos($fileLine, '#') !== false || count($args) < 3) {
continue;
}
$verb = $args[0] ?? null;
$endpoint = $args[1] ?? null;
$controller = $args[2] ?? null;
$routeMiddleware = $args[3] ?? null;
// This line has changed
$route = $app->{$verb}($endpoint, $controller);
if (isset($routeMiddleware) && $routeMiddleware !== '') {
$routeMiddleware = trim($routeMiddleware);
$middlewares = explode('|', $routeMiddleware);
foreach ($middlewares as $middlewareFunction) {
// This line has changed
$route->add(function ($request, $response, $next) use ($middlewareFunction) {
return Middleware::{$middlewareFunction}($request, $response, $next);
});
}
}
}
};
- 1 回答
- 0 關(guān)注
- 124 瀏覽
添加回答
舉報(bào)