Laravel:如何记录表单请求输入中的错误

Laravel:如何记录表单请求输入中的错误,laravel,validation,Laravel,Validation,我使用Laravel的表单请求来验证一些复杂的输入。如果有错误,Laravel将用户返回到上一页(这很好),但我也希望它为我记录错误。我该怎么做 我试图使用表单的with validator方法,如下所示,但在“已达到最大嵌套级别”时出错 public function withValidator($validator) { $validator->after(function ($validator) { if ($validator->fails()) {

我使用Laravel的表单请求来验证一些复杂的输入。如果有错误,Laravel将用户返回到上一页(这很好),但我也希望它为我记录错误。我该怎么做

我试图使用表单的
with validator
方法,如下所示,但在“已达到最大嵌套级别”时出错

public function withValidator($validator)
{
    $validator->after(function ($validator) {
        if ($validator->fails()) {
            foreach($validator->errors()->all() as $error) {
                logger($error);
            }
        }
    });
}

在laravel上进行验证的最佳方法是使用

如果传入的请求参数未通过给定的验证规则,Laravel将自动将用户重定向回其以前的位置

此外,所有验证错误都将出现在
$error
变量中

$errors变量由web中间件组提供的照亮\view\Middleware\ShareErrorsFromSession中间件绑定到视图。应用此中间件时,$errors变量将始终在您的视图中可用,允许您方便地假设始终定义了$errors变量并可以安全使用

要查看错误,可以在视图中添加以下代码段,该代码段在验证失败时返回:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if($errors->any())
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫
调用
$validator->fails()
after回调中的
$validator->fails()
将以无限循环结束,因为它在过程中调用
$validator->after()
。它重新计算,不使用以前的结果

改为使用
$validator->errors()
,并检查它是否为空