Laravel,验证后捕捉错误

Laravel,验证后捕捉错误,laravel,laravel-5,Laravel,Laravel 5,Laravel 5.1我有以下代码: $validator = Validator::make($request->all(), [ 'name' => 'required|max:255', 'file' => 'required|max:2000', ]); if ($validator->fails()) { // do something depending the error before returning and redirect

Laravel 5.1我有以下代码:

$validator = Validator::make($request->all(), [
    'name' => 'required|max:255',
    'file' => 'required|max:2000',
]);
if ($validator->fails()) {
    // do something depending the error before returning and redirect
    if (name not present) {
      my code for this
    }

    if (file larger than 2000) {
      my code for this
    }

    return redirect()
    ->back()
    ->withErrors($validator)
    ->withInput();
}
因此,如果名称不存在,我需要运行一些代码,如果文件大于2000,则需要另一个,以此类推


我怎样才能知道哪条规则失败了呢?

其实很简单。与$errors全局传递到前端并使方法具有相同的方式,您可以在重定向之前检查控制器中的错误:

$validator = Validator::make($request->all(), [
  'name' => 'required|max:255',
  'file' => 'required|max:2000',
]);
if ($validator->fails()) {
  // do something depending the error before returning and redirect
  if($validator->errors()->has('name')){
    // Do whatever for `name` issue.
  }

  if($validator->errors()->has('file')){
    // Do whatever for `file` issue.
  }

  return back()
  ->withErrors($validator)
  ->withInput(); // Don't need `redirect()->back()`, `back()` is enough.
}
注意,这将捕获必需规则和最大规则。要检查单个规则,可以将failed方法与isset结合使用:


其实很简单。与$errors全局传递到前端并使方法具有相同的方式,您可以在重定向之前检查控制器中的错误:

$validator = Validator::make($request->all(), [
  'name' => 'required|max:255',
  'file' => 'required|max:2000',
]);
if ($validator->fails()) {
  // do something depending the error before returning and redirect
  if($validator->errors()->has('name')){
    // Do whatever for `name` issue.
  }

  if($validator->errors()->has('file')){
    // Do whatever for `file` issue.
  }

  return back()
  ->withErrors($validator)
  ->withInput(); // Don't need `redirect()->back()`, `back()` is enough.
}
注意,这将捕获必需规则和最大规则。要检查单个规则,可以将failed方法与isset结合使用:


就像一个符咒。我在读这篇文章:试图像施咒一样使用这种方法。我在读这篇文章:尝试使用那种方法