请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

3回答

慕粉3402813 2019-03-07 15:23:29

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

0 回复 有任何疑惑可以回复我~
提问者 Whitekey 2017-11-13 09:27:46
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 回复 有任何疑惑可以回复我~
  • 7七月 #1
    我大概知道你的意思,你是想在子类里继承rule这个规则,然后在添加新的规则?恐怕不行,只能添加自定义的规则。
    回复 有任何疑惑可以回复我~ 2017-11-13 18:50:47
7七月 2017-11-13 02:43:47

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信