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

Laravel-如何将可为空的参数传递给中间件?,laravel,middleware,Laravel,Middleware,我知道您可以通过如下操作将参数传递给中间件: Route::get('books', function ($id) { // })->middleware('convert-string-bool:available'); 但是,如果请求中的available参数可为null,因此可能并不总是存在,该怎么办?在这种情况下,Laravel将在路由文件中引发异常 这个逻辑是否应该在中间件中处理,而我们只是从请求中获取所有参数 public function handle($r

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

Route::get('books', function ($id) {
    //
})->middleware('convert-string-bool:available');
但是,如果请求中的
available
参数可为null,因此可能并不总是存在,该怎么办?在这种情况下,Laravel将在路由文件中引发异常

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

    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);
   
    }
 }
这可能有用吗-

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

        return $next($request);
   
    }
 }

我不知道你想达到什么目的,你能再详细说明一下吗?
available
参数是字符串,而不是变量。是否显示中间件的句柄签名。。。由于您可以有可选参数和可变数量的参数当然,我已经用我的中间件处理程序进行了更新。我不知道您想要实现什么,您能进一步说明吗?
available
参数是字符串,而不是变量。是否显示中间件的句柄签名。。。因为您可以有可选的参数和可变数量的参数。当然,我已经用我的中间件处理程序进行了更新。这是正确的,我错认为异常发生在路由中,它实际上到达了中间件,因此可以处理。这是正确的,我错认为异常发生在路由中,它实际上到达了中间件,因此可以处理。