ThinkPhP中model自动验证 $_validate $_auto
1 <?php 2 class UserModel extends RelationModel{ 3 4 5 /**自动验证**/ 6 protected $_validate = array( 7 /**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/ 8 array('username','','该用户名已经存在!',1,'unique'), 9 array('password','5,12','密码过短,请重新输入!',1,'length'),// 自定义函数验证密码格式 10 array('repassword','password','两次密码不一致,请确认输入!',1,'confirm'), 11 ); 12 13 /*这边附加规则中的'callback' 与 'function' 必须分清楚,'callback是用户自定义的函数', 14 'function'是系统自带的函数 15 */ 16 /**验证条件**/ 17 /** 18 * Model::EXISTS_VALIDATE 或者0 存在字段就验证(默认) 19 * Model::MUST_VALIDATE 或者1 必须验证 20 * Model::VALUE_VALIDATE或者2 值不为空的时候验证 21 */ 22 /**验证时间**/ 23 /** 24 * Model::MODEL_INSERT或者1新增数据时候验证 25 * Model::MODEL_UPDATE或者2编辑数据时候验证 26 * Model::MODEL_BOTH或者3全部情况下验证(默认) 27 * 这里的验证时间需要注意,并非只有这三种情况,你可以根据业务需要增加其他的验证时间。 28 */ 29 30 /**自动增加**/ 31 protected $_auto = array ( 32 /**array([增加字段],[增加函数],[增加条件],[附加规则])**/ 33 array('addtime','time',3,'function'), 34 ); 35 36 /**后台检查密码长度**/ 37 protected function checkPwd($password){ 38 if(strlen($password) < 5){ 39 return false; 40 }else{ 41 return true; 42 } 43 } 44 45 } 46 47 ?>
动态绑定模式:
1 <?php 2 class UserAction extends Action{ 3 4 public function user(){ 5 $this->display(); 6 } 7 8 public function index(){ 9 $user = D('User'); 10 $validate = array( 11 /**array([验证字段],[验证规则],[错误提示],(验证条件(默认为存在字段就验证)),(附加规则),(验证时间))**/ 12 array('username','','该用户名已经存在!',1,'unique'), 13 array('password','5,12','密码过短,请重新输入!',1,'length'),// 自定义函数验证密码格式 14 array('repassword','password','两次密码不一致,请确认输入!',1,'confirm'), 15 ); 16 $auto = array( 17 array('addtime','time',3,'function'), 18 ); 19 // model模型中的内置函数 20 // $user->setProperty('_validate',$validate); 21 // $user->setProperty('_auto',$auto); 22 $user->validate($validata)->auto($auto); 23 if($user->create()){ 24 if($user->add()){ 25 $this->success('注册成功'); 26 }else{ 27 $this->error('注册失败'); 28 } 29 }else{ 30 $this->error($user->getError()); 31 } 32 } 33 } 34 ?>