framework icon indicating copy to clipboard operation
framework copied to clipboard

关于Validate 验证场景使用问题

Open studyzhanglei opened this issue 4 years ago • 4 comments

    protected $rule = [
        'id'         => 'require|integer',
        'age'         => 'require|integer',
    ];

    protected $scene = [
        'add'           => [
            'id', 'age'
        ],
    ];

如上是我一开始的验证器代码,我希望验证场景是add的时候去验证id和age这两个参数。

后面app跟我反馈,id和age是非必填的,我想到的肯定是在验证场景里面把这两个参数去掉

    protected $rule = [
        'id'         => 'require|integer',
        'age'         => 'require|integer',
    ];

    protected $scene = [
        'add'           => [
        ],
    ];

可是上面的验证规则会去匹配所有的rule,我觉得这个不太友好,很难注意到这种问题

studyzhanglei avatar Jun 22 '21 11:06 studyzhanglei

如果是非必填,你需要做的是,把require规则给去掉,而不是在验证场景中去掉idage两个字段。

moniang avatar Aug 16 '21 06:08 moniang

如果是非必填,你需要做的是,把require规则给去掉,而不是在验证场景中去掉idage两个字段。

你说的方案是可以的,但是我更习惯现在这样的写法,因为后面很可能会有其他的验证规则

studyzhanglei avatar Aug 17 '21 02:08 studyzhanglei

如果是非必填,你需要做的是,把require规则给去掉,而不是在验证场景中去掉idage两个字段。

不能去掉,其他的场景是必填的,我这个代码是最简的所以没有体现出来

studyzhanglei avatar Aug 17 '21 02:08 studyzhanglei

public function sceneEdit()
    {
    	return $this->only(['name','age'])
        	->append('name', 'min:5')
            ->remove('age', 'between')
            ->append('age', 'require|max:100');
    }   

0xxfu avatar Sep 22 '21 15:09 0xxfu