2017-06-06 189 views
2

我在我的laravel 5.4应用程序中有一个注册表单,并且laravel form request validation用于服务器端验证。这种形式的一些字段是使用javascript中的计算动态填充的,需要根据用户输入进行验证。laravel form请求验证的自定义验证规则

表单中的用户输入字段为'quantity''rate''discount'

填写的字段为'total''bill_amount'

我需要的验证是:

  1. 检查 '总' 等于 '量' * '速度'。
  2. 检查“bill_amount”等于“总” - “率”

我宁愿这个验证laravel形式要求的验证方法。我试图使用像After Hooksconditionally adding rule等方法,并失败。

在简单的话要求是:检查是否一个字段等于其它两个字段的产品,和invalidate if not equalvalidate if equal(使用形式请求验证。)

预先感谢!

回答

0

经过很长时间我才找到了这个解决方案。

表格请求鱼钩后可用于实现结果: [我无法找到之前这个逻辑]

public function withValidator($validator) 
    { 
     $quanty  = $this->request->get("quantity"); 
     $rate  = $this->request->get("rate"); 
     $billAmount = $this->request->get("bill_amount"); 

     $validator->after(function ($validator) { 
      if(($quanty * $rate) != $billAmount) { 
       $validator->errors()->add('bill_amount', 'Something went wrong with this field!'); 
      } 
     }); 
    }