laravel 表单请求验证的自定义验证规则

Customized validation rule on laravel form request validation

我的 laravel 5.4 应用程序中有一个注册表单,laravel form request validation 用于服务器端验证。此表单中的某些字段是使用 javascript 中的计算动态填充的,需要根据用户输入进行验证。

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

填充的字段是 'total''bill_amount'

我需要验证的是:

  1. Check 'total' equal to 'quantity' * 'rate'.
  2. Check 'bill_amount' equal to 'total' - 'rate'

我更喜欢 laravel 表单请求验证方法来进行此验证。我尝试使用 After Hooksconditionally adding rule 等方法,但失败了。

In simple words the requirement is : check if a field is equal to product of other two fields, and invalidate if not equal and validate if equal.(using form request validation.)

提前致谢!

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

表单请求Hooks后可以用来实现结果: [之前找不到这个逻辑]

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!');
            }
        });
    }