在 laravel 5.4 验证中传递自定义参数

Pass custom parameters in laravel 5.4 validation

我正在 laravel 5.4 和 vuejs(多语言支持)开发一个应用程序,它验证 csv 文件的内容。我已经使用 vuejs 解析了 csv 文件,结果 json 数组 post 到 Laravel。

在 Laravel 上,我循环 json 数组并使用 laravel 验证器验证字段。

$i = 0;
foreach ($json_array as $key => $value) {

   $params contains employee_id's and employee_name's

   $i = $i + 1;       

   Validator::make($params, [
            'employee_id'         => 'required|integer|exists:employees,employee_id',
            'employee_name'       => 'required|string',     
        ])->validate();
}

这可以使用 laravel 验证和 laravel 如果验证规则有任何中断则触发错误。

示例:Laravel 如果 csv 文件有空字段 employee_name,则显示错误 "employee_name is required"。

现在我需要用行号(行)显示错误,行号可以使用 $i 变量。如何将 $i 变量(行)传递给验证文件以显示带有行号的错误。

我已经花了很多时间将变量作为参数传递给验证消息(在验证文件上)。但是我没有得到解决方案。

我期望的输出是:

示例:

"employee_name is required in line : 8" 如果 csv 文件在第 8 行有一个空字段 employee_name。

另外,当触发错误时如何获取列编号?

感谢回复。

Laravel 验证器允许将自定义消息作为第三个参数传递,试试这个

$i = 0;
foreach ($json_array as $key => $value) {
    $i++;
    $messages = [
      'required' => str_replace(":line",$i,trans('validation.required')),
    ];
    Validator::make($params, [
        'employee_id'         => 'required|integer|exists:employees,employee_id',
        'employee_name'       => 'required|string',     
    ],$messages)->validate();
}

// .project/resources/lang/en/validation.php
'required' => 'The :attribute is required in the line :line.',