【问题标题】:Pass custom parameters in laravel 5.4 validation在 laravel 5.4 验证中传递自定义参数
【发布时间】:2018-08-21 21:42:36
【问题描述】:

我正在使用 laravel 5.4 和 vuejs(多语言支持)开发一个应用程序,用于验证 csv 文件的内容。我已经使用 vuejs 解析了 csv 文件,并将结果 json 数组发布到 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 触发错误。

示例:如果 csv 文件有一个空字段employee_name,Laravel 会显示错误“employee_name is required”。

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

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

我期望的输出是:

例子:

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

还有当触发错误时如何获取列号?

感谢您的回复。

【问题讨论】:

  • 现有验证规则无法解决您的需求,我的建议是使用自定义验证规则,但您必须自己尝试,您可以阅读here
  • 发送消息数组到make方法。

标签: laravel csv validation vuejs2 laravel-5.4


【解决方案1】:

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

【讨论】:

  • 我已经试过了,这个可以。但我正在开发一个多语言支持应用程序,所以我需要 lang 文件中的参数($i -row count)。另外,当触发错误时,如何获取 col 编号。
  • 我相信你可以得到带有$key 变量的列,检查一下。我也更新了关于多语言支持的答案。
猜你喜欢
  • 2017-01-06
  • 2019-06-21
  • 2018-11-04
  • 2018-04-24
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 2015-07-29
相关资源
最近更新 更多