使用 codeigniter 在 form_validation.php 中创建自定义验证回调
Create custom validation callback in form_validation.php using codeingiter
您好,我正在尝试为我的表单创建一个验证回调,以便仅在字段不为空时验证该字段。我将验证规则创建到名为 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
中的所有其他规则
有什么帮助吗?提前致谢。
希望对您有所帮助
form_validation.php
/*put callback rule in form_validation.php*/
$config=array(
'Users_Controller/add'=>array(
array(
'field'=>'email',
'label'=>'email',
'rules'=>'callback_check_email'
),
)
);
将回调方法放在Users_controller.php
在Users_controller.php
function check_email($value)
{
/*check your email rule here as u want */
/* this is just example*/
$email= $this->YourModel->getemailofUser();
if ($value == $email) {
return TRUE;
}
else
{
$this->form_validation->set_message('check_email', 'Your email is not a valid registered email!');
return FALSE;
}
}
为了调用特定的验证规则组,例如Users_Controller/add
,您需要将组名传递给run()
方法。
Users_controller.php
...
public function add(){
if($this->form_validation->run('Users_Controller/add')){
...
}
...
要使验证回调正常工作,您必须将回调方法放在调用回调的方法的同一控制器中。
您好,我正在尝试为我的表单创建一个验证回调,以便仅在字段不为空时验证该字段。我将验证规则创建到名为 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
中的所有其他规则有什么帮助吗?提前致谢。
希望对您有所帮助
form_validation.php
/*put callback rule in form_validation.php*/
$config=array(
'Users_Controller/add'=>array(
array(
'field'=>'email',
'label'=>'email',
'rules'=>'callback_check_email'
),
)
);
将回调方法放在Users_controller.php
在Users_controller.php
function check_email($value)
{
/*check your email rule here as u want */
/* this is just example*/
$email= $this->YourModel->getemailofUser();
if ($value == $email) {
return TRUE;
}
else
{
$this->form_validation->set_message('check_email', 'Your email is not a valid registered email!');
return FALSE;
}
}
为了调用特定的验证规则组,例如Users_Controller/add
,您需要将组名传递给run()
方法。
Users_controller.php
...
public function add(){
if($this->form_validation->run('Users_Controller/add')){
...
}
...
要使验证回调正常工作,您必须将回调方法放在调用回调的方法的同一控制器中。