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
参数是字符串,而不是变量。是否显示中间件的句柄签名。。。因为您可以有可选的参数和可变数量的参数。当然,我已经用我的中间件处理程序进行了更新。这是正确的,我错认为异常发生在路由中,它实际上到达了中间件,因此可以处理。这是正确的,我错认为异常发生在路由中,它实际上到达了中间件,因此可以处理。