YII场景验证

来自PHPSAPCE

关于YII的验证规则,在YIIguide中的创建模型中已经有表述了。其中一种方式就是根据不同的场景来设置不同的规则。比如在登录和注册的时候都要用到User这个模型,但是登录与注册所要求的规则不一样,这个时候就可以使用场景来设置不同的规则了:

<?php

class User extends CActiveRecord {
    public static function model($className = __CLASS__) {
        
        return parent::model($className);
    }
    public function tableName() {
        
        return '{{user}}';
    }
    public function rules() {
        
        return array(
                      array('username,password,email','required',
                            'message'=>'这些属性不能为空','on'=>'register'),
                      array('email,password','required',
                            'message'=>'这些属性不能为空','on'=>'login')




            );
    }
}
?>


也就是在on的后面跟上一个场景名。比如如上代码的registerlogin。当然也可以在同一个规则中设置多个场景:
array('tagname', 'checktagname', 'on'=>'create,update')
UserController中需要使用如下的函数:
$model->setScenario('register');参数为场景名。

<?php

class UserController extends Controller {
    public function actionRegister() {
        $model = new User();
        $model->setScenario('register');  
        if (isset($_POST['User'])) {
            $model->attributes = $_POST['User'];
        }
        $model->validate();
        //code...
        $this->render('index', array(
            'model' => $model
        ));
    }
        public function actionLogin() {
            $model = new User();
            $model->setScenario('login');  
            if (isset($_POST['User'])) {
                $model->attributes = $_POST['User'];
            }
            $model->validate();
              //code...
            $this->render('index', array(
                'model' => $model
            ));
        }
    }
?>

这样就能根据不同的场景来设置规则了。就不需为登录和注册单独建立Model了(比如LoginFormRegisterForm)。
on属性来自CValidator,一条验证规则的第三个及以后的参数就是所对应的验证类的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值