Laravel 11中如何检查ConvertEmptyStringsToNull中间件是否已注册
在Laravel 11中检查ConvertEmptyStringsToNull中间件是否注册
Laravel 11移除了App\Http\Kernel类,改用bootstrap/app.php中的withMiddleware方法配置中间件,但你可以通过以下方式检查目标中间件的注册状态:
检查全局中间件
全局中间件可通过Illuminate\Contracts\Http\Kernel接口实例获取列表,再判断是否包含目标类:
$kernel = app(\Illuminate\Contracts\Http\Kernel::class); $globalMiddlewareList = $kernel->getMiddleware(); $isRegistered = in_array(\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, $globalMiddlewareList);
检查路由中间件组(如web/api组)
如果需要确认中间件是否在某个路由组中注册,可以使用Laravel 11新增的中间件管理器Illuminate\Http\Middleware\Middleware:
$middlewareManager = app(\Illuminate\Http\Middleware\Middleware::class); // 替换为你要检查的中间件组名称,比如'api' $groupMiddlewareList = $middlewareManager->getGroup('web'); $isRegistered = in_array(\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, $groupMiddlewareList);
补充说明
Laravel 11默认的全局中间件集合中已经移除了ConvertEmptyStringsToNull,如果你的项目需要这个中间件的功能,需要手动在bootstrap/app.php的withMiddleware方法中添加:
return Application::configure(basePath: dirname(__DIR__)) ->withMiddleware(function (Middleware $middleware) { $middleware->append(\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class); }) // ...其他配置 ->create();
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

