表单验证 validation 用法
首先要在 config/autoload.php添加这一句
$autoload['libraries'] = array('form_validation','session');
在 controller里验证规则
$this->form_validation->set_rules('email', 'email', 'required|valid_email');
$this -> form_validation -> set_rules('password','Password','required');
$this -> form_validation -> set_rules('password2','Confirm Password','matches[password]');
$this -> form_validation -> set_rules('username','Username',
'trim|required|min_length[3]|max_length[15]|is_unique[users.username]',
array('is_unique' => 'This username already exists in our records.'));
部分验证规则:
- trim: 移除字符串开头和结尾的whitespace
- required: email不能为空
- valid_email: 检查是否按照email的格式
- min_length[3]: 字符串最小长度为3
- max_length[15]: 字符最大长度为15
- matches['password']: 检查是否和name='password'的 value一样
- is_unique[users.username]:检查在users表中 username属性有没有这个属性
- alpha_numerice: 只能含有数字和字母
拘役的验证规则可查看:https://codeigniter.org.cn/user_guide/libraries/form_validation.html
通过array 可以修改提示的message:
array('validation 的验证规则名字' => '提示的信息')
除了用is_unique['users.name']检查名字的唯一性,我们还可以用custom validation
$this -> form_validation -> set_rules('username','Username',
'trim|required|callback_check_username_exists');
callback_check_username_exists 是一个 custom validation
开头一定要加callback_
方法一:在uer_model里面加check_username_exists的方法
function check_username_exists($username){
$this -> form_validation ->set_message('check_username_exists',
'That username is taken. Please choose a different one');
if($this -> user_model ->check_username_exists($username)){
return true;
} else {
return false;
}
}
方法二:在controller里面写
// check username exists
public function check_username_exists($username){
$query = $this ->db ->get_where('users',array('username' =>$username));
if(empty($query ->row_array())){
return true;
} else{
return false;
}
}