您好我正在尝试为我的表单创建验证回调,以便仅在字段不为空时才验证该字段。我将验证规则创建到名为 form_validation.php 的配置文件中。 以下是其内容的一部分:
$config=array(
'Users_Controller/add'=>array(
array(
'field'=>'email',
'label'=>'email',
'rules'=>'callback_email'
),
)
);
public function email($value){
if( trim( strlen($value) )!==0 ){
$this->form_validation->set_rules(
'email',
'email',
'valid_email|is_unique[users.email]',
array(
'valid_email'=>'invalid email',
'is_unique' => 'email already registered'
)
)
}
}
在我的控制器中,在 users_Controller.php 中,这是我处理表单提交的方式:
class Users_Controller extends CI_Controller{
public function add(){
if($this->form_validation->run()){
$this->User_model->save();
$this-session->set_flashdata('success','okay');
redirect('users/list');
}
else {
$this->load->view('add')
}
}
}
不幸的是,验证没有考虑我在配置文件 form_validation.php 中添加的回调验证方法,但是如果我将此回调放在控制器中,则验证过程会忽略所有其他规则在 form_validation.php
中加入有任何帮助吗?提前谢谢。
答案 0 :(得分:1)
希望这可以帮助您
<强> form_validation.php 强>
/html/memo/
将回调方法放入Users_controller.php
在Users_controller.php中
/*put callback rule in form_validation.php*/
$config=array(
'Users_Controller/add'=>array(
array(
'field'=>'email',
'label'=>'email',
'rules'=>'callback_check_email'
),
)
);
}
答案 1 :(得分:0)
要调用特定的验证规则组,例如Users_Controller/add
,您需要将组名传递给run()
方法。
Users_controller.php
...
public function add(){
if($this->form_validation->run('Users_Controller/add')){
...
}
...
要使验证回调正常工作,您必须将回调方法放在调用回调的方法的同一个控制器中。