我有两个字段只有在两个字段都不存在时才是可选的:
$rules = [ 'initial_page' => 'required_with:end_page|integer|min:1|digits_between: 1,5','end_page' => 'required_with:initial_page|integer|min:2|digits_between:1,5' ];
现在,end_page需要大于initial_page.如何包含此过滤器?
解决方法
没有内置验证可以让您比较Laravel中的字段值,因此您需要实现自定义验证器,以便在需要时重用验证.幸运的是,Laravel使编写自定义验证器非常容易.
首先在yor AppServiceProvider中定义新的验证器:
class AppServiceProvider extends ServiceProvider { public function boot() { Validator::extend('greater_than_field',function($attribute,$value,$parameters,$validator) { $min_field = $parameters[0]; $data = $validator->getData(); $min_value = $data[$min_field]; return $value > $min_value; }); Validator::replacer('greater_than_field',function($message,$attribute,$rule,$parameters) { return str_replace(':field',$parameters[0],$message); }); } }
现在,您可以在$规则中使用全新的验证规则:
$rules = [ 'initial_page' => 'required_with:end_page|integer|min:1|digits_between: 1,'end_page' => 'required_with:initial_page|integer|greater_than_field:initial_page|digits_between:1,5' ];
您可以在此处找到有关创建自定义验证器的更多信息:http://laravel.com/docs/5.1/validation#custom-validation-rules.它们很容易定义,然后可以在验证数据的任何位置使用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。