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

时间:2018-03-13 15:03:30

标签: laravel csv validation vuejs2 laravel-5.4

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

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

$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显示错误" employee_name是必需的"如果csv文件有一个空字段employee_name。

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

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

我期望的输出是:

示例:

" employee_name在行中是必需的:8"如果csv文件在第8行有一个空字段employee_name。

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

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

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.',