Laravel - 如何将可为空的参数传递给中间件?

Laravel - how to pass a nullable parameter to middleware?

我知道您可以通过执行以下操作将参数传递给中间件:

Route::get('books', function ($id) {
    //
})->middleware('convert-string-bool:available');

但是,如果 available 参数在请求中可以为 null,因此可能并不总是存在怎么办? Laravel 在这种情况下会在 Route 文件中抛出异常。

这个逻辑是否应该在中间件中处理,我们只从请求中获取所有参数?

    public function handle($request, Closure $next, $field)
    {
        $data = $request->all();

        $data = $this->convertStringBooleans($data, $field);

        $request->replace($data);

        return $next($request);
    }

    /**
     * Converts all string booleans to booleans
     *
     * @param   array  $data
     * @return  array
     */
    private function convertStringBooleans($data, $key)
    {
        $value = $data[$key];

        if ($value === 'true' || $value === 'TRUE') {
            $data[$key] = true;
        }

        if ($value === 'false' || $value === 'FALSE') {
            $data[$key] = false;
        }

        return $data;
    }

可能这行得通 -

class SampleMiddleware
{
     public function handle($request, Closure $next , $field = null)
    {   
        // code

        return $next($request);
   
    }
 }