【问题标题】:How to make a good validation on laravel?如何在 laravel 上进行良好的验证?
【发布时间】:2020-04-02 17:01:09
【问题描述】:

我有数据,它们看起来像这样:

 {
   sender_name : "Real fake sender name",
   recipient_name : "Real fake recipient name",
   goods: [
     {
        "no" : 1
        "name":"Pen",
        "unit": "1",
        "qty":"50",
        "price":"50",
        "amount":"2500",
        "vat_percent":"5",
        "vat_sum": "125",
        "total_sum": "2625"
     }
   ]
 }

我需要使用扩展验证器来验证“商品”。这是他的代码:

Validator::extend('invoiceGoods' , function($attribute, $value, $parameters, $validator) {

  $rulesForGoods = [
      'no'          => 'integer|required',
      'name'        => 'string|max:64|required',
      'unit'        => 'required|integer',
      'qty'         => 'required|string',
      'price'       => 'required|numeric',
      'amount'      => 'required|numeric',
      'vat_percent' => 'nullable|numeric',
      'vat_sum'     => 'nullable|numeric',
      'total_sum'   => 'required|numeric'
  ];

  foreach ($value as $good) {
      $validator = Validator::make($good , $rulesForGoods);
      if ($validator->fails()) {
          return false;
      }
  }

  return true;

});

这是主要代码。

$validator = Validator::make($data , [
   'goods' => 'invoiceGoods',
   'sender_name' => 'string',
   'recipient_name' => 'string',
]);

if ($validator->fails()) {
  return response()->json([
    'success' => false,
    'message' => 'Validation error.',
    'data'    => $validator->errors()
  ]);
}

如果出现商品验证错误,我会得到这个答案:

但我想显示这样的错误:货物中的单位错误,没有 1。

我知道第三个参数可以传递一个带有自定义消息的数组,但是如果它应该返回 true 或 false,如何从扩展验证器中返回它?

【问题讨论】:

    标签: laravel laravel-validation


    【解决方案1】:

    https://laravel.com/docs/5.8/validation#custom-error-messages

    $messages = [
    'Validation.invoice_goods' => 'Errror message!',];
    
    $validator = Validator::make($input, $rules, $messages);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 2019-10-17
      • 2018-02-09
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      相关资源
      最近更新 更多