Tp5中自定义验证的问题

例如 数组是这样的

$data = [
    [
        'mobile'=> '手机号码1',
        'price' => '100.00'
    ],
        [
        'mobile'=> '手机号码2',
        'price' => '500.00'
    ],
];

一维数组的验证是直接可以

  protected $rule = [
    'mobile'=> 'require|mobile',
  ]

但是现在是二维数组,Tp是有自定义验证的,现在想验证的是,数组里面的手机号码必须有值而且必须是合法的手机号码,金额必须为正整数或者小数点后有两位!

自定义验证:

  protected $rule = [
    'mobile'=> 'require|array|checkMobile',
  ]
//自定义验证函数
protected function checkMobile()
{
  //在这里面咋使用验证呢?
  //最好是可以使用Tp自带的规则 比如mobile require unique等!!!!
}
阅读 4.2k
2 个回答
//自定义验证函数
    protected function checkMobile($value)
    {
        # 01: 首先循环当前数据  每一项的值(value)
        # 02: 之后将该值赋给 变量mobile
        # 03: 之后使用写验证规则和错误信息
        # 04: 之后将错误信息给$this->message();
        # 05: 最后验证  $this->check(验证数据,验证规则);
        # 06: 最后判断 如何为false 就返回错误信息 $this->getError();
        foreach ($value as $item) {
            $data['mobile'] = $item;
            $rules = [
                'mobile' => 'require|mobile',
            ];
            $message = [
                'mobile.require' => '手机号码不得为空!',
                'mobile.mobile' => '手机号码格式错误!',
            ];
            if (false === $this->message($message)->check($data, $rules)) {
                return $this->getError();
            } else {
                return true;
            }
        }
    }

使用的时候:

    protected $rule = [
        'mobile' => 'require|checkMobile',
    ];

数据是:

$data = [
    [
        'mobile'=> ['手机号码1','手机号码2'],
    ];
];

emmm,foreach去调用抽象出来独立的validator,一点思路,我看了之前的TP5的小项目,好像最多也是一位数组的校验,希望对你有所帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题