2018-03-30 14:50:29 3175次浏览 3条回答 0 悬赏 20 金钱

假如我现在name字段有两个验证规则(integer,required),我有个两个场景,create和update,
create场景的时候我两个都要验证,update的时候我只验证required,请问怎么实现?
scenarios方法和rules里改怎么写

最佳答案

  • yzh52521 发布于 2018-03-30 15:48 举报

    这样行不行

    public function rules()
    {
       return [
            [['name'],'integer','on'=>['add']],
            [['name'],'required']
        }
    
    1 条回复
    回复于 2018-04-04 17:54 回复

    这样可以。我想解答一下:['name'],'integer'绑定了add场景,['name'],'required'没有绑定任何场景。所以在add场景中可以使用当前绑定的场景和未绑定的场景(['name'],'required')。所以add可以验证['name'],'integer'和['name'],'required'。而update只能验证['name'],'required',因为['name'],'integer' 被add捷足先登了。

  • 回答于 2018-03-30 18:04 举报

    return [

    ['name', 'required', 'on' => ['create', 'update']],
    ['name', 'integer', 'on' => ['create', 'update']],
    ['name', 'required', 'on' => ['update']],
    
    

    ];

  • 回答于 2018-03-31 10:29 举报
    public function scenarios()
    {
        return [
            'create' => ['name'],
            'update'=>['name']
        ];
    }
    
    public function rules()
    {
        return [
            ['name','required','message'=>''],
            ['name','integer','message'=>'','on'=>['create'],
        ];
    }
    
    
您需要登录后才可以回答。登录 | 立即注册
王文凡
经理

王文凡 ChengDu

注册时间:2016-04-11
最后登录:2018-07-26
在线时长:20小时44分
  • 粉丝3
  • 金钱1065
  • 威望10
  • 积分1365

热门问题