加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel:验证需要大于另一个的整数字段

发布时间:2020-12-14 19:33:59 所属栏目:大数据 来源:网络整理
导读:我有两个字段只有在两个字段都不存在时才是可选的: $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需要大于initi
我有两个字段只有在两个字段都不存在时才是可选的:

$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.它们很容易定义,然后可以在验证数据的任何位置使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读