OrderPlace里面的验证器写入BaseValidate怎么弄

来源:10-7 编写一个复杂的验证器

Whitekey

2017-11-12

OrderPlace里面的验证器写入BaseValidate该怎么弄?$singleRule这个规则不知道怎么传入BaseValidate去?请老师解答。

写回答

3回答

慕粉3402813

2019-03-07

因为BaseValidate继承了Validate,Validate类中有个构造函数,当实例化BaseValidate时传入的第一个参数就是$singleRule这个需要验证的规则。

0
0

Whitekey

提问者

2017-11-13

class OrderPlace extends BaseValidate
{
    protected $rule = [
        'products' => 'checkProducts'
    ];
    protected $singleRule = [
        'product_id' => 'require|isPositiveInteger',
        'count' => 'require|isPositiveInteger',
    ];
    protected function checkProducts($values)
    {
        ...
        foreach ($values as $value)
        {
            $this->checkProduct($value);
        }
        return true;
    }
    protected function checkProduct($value)
    {
        $validate = new BaseValidate($this->singleRule);
        $result = $validate->check($value);
        if(!$result){
            throw new ParameterException([
                'msg' => '商品列表参数错误',
            ]);
        }
    }
}

如何让这个验证规则也变成通用的规则,我就是不知道怎么把子规则验证传入BaseValidate这个类里。望老师解答。

0
1
7七月
我大概知道你的意思,你是想在子类里继承rule这个规则,然后在添加新的规则?恐怕不行,只能添加自定义的规则。
2017-11-13
共1条回复

7七月

2017-11-13

能不能给一段具体的代码?

0
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4818 学习 · 4382 问题

查看课程