阅读(1783) (0)

Laravel 8 URL Defaults & Middleware Priority

2021-06-25 09:32:00 更新

Setting URL default values can interfere with Laravel’s handling of implicit model bindings. Therefore, you should prioritize your middleware that set URL defaults to be executed before Laravel’s own SubstituteBindings middleware. You can accomplish this by making sure your middleware occurs before the SubstituteBindings middleware within the $middlewarePriority property of your application’s HTTP kernel.

The $middlewarePriority property is defined in the base Illuminate\Foundation\Http\Kernel class. You may copy its definition from that class and overwrite it in your application’s HTTP kernel in order to modify it:

/**
 * The priority-sorted list of middleware.
 *
 * This forces non-global middleware to always be in the given order.
 *
 * @var array
 */
protected $middlewarePriority = [
    // ...
     \App\Http\Middleware\SetDefaultLocaleForUrls::class,
     \Illuminate\Routing\Middleware\SubstituteBindings::class,
     // ...
];