Php CodeIgniter 3回调中无法返回错误消息
我的代码有问题。我正在为我的小项目创建一个使用CI3的简单登录。我的问题是在回调验证中有一条错误消息 这是我在尝试验证表单时收到的错误Php CodeIgniter 3回调中无法返回错误消息,php,codeigniter,Php,Codeigniter,我的代码有问题。我正在为我的小项目创建一个使用CI3的简单登录。我的问题是在回调验证中有一条错误消息 这是我在尝试验证表单时收到的错误 Unable to access an error message corresponding to your field name Password.(check_database) 以下是控制器中的mo代码: public function index() { $this->form_validation->set_rules
Unable to access an error message corresponding to your field name Password.(check_database)
以下是控制器中的mo代码:
public function index() {
$this->form_validation->set_rules('username', 'Username', 'trim|required');
$this->form_validation->set_rules('password', 'Password', 'trim|required|callback_check_database');
$this->form_validation->set_error_delimiters('<div class="error text-red">', '</div>');
if($this->form_validation->run() == FALSE) {
$data = array();
$data['modules'] = $this->flx_lib->moduler($data);
$this->load->view('login', $data);
} else {
//ok
}
}
public function check_database($password) {
$username = $this->input->post($username);
$result = $this->flx_users->validate_user($username, $password);
if($result) {
//ok
return TRUE;
} else {
$this->form_validation->set_message('check_database', 'Invalid username or password');
return FALSE;
}
}
公共功能索引(){
$this->form_validation->set_规则('username'、'username'、'trim | required');
$this->form_validation->set_rules('password','password','trim | required | callback_check_database');
$this->form_validation->set_error_分隔符(“”,);
如果($this->form\u validation->run()==FALSE){
$data=array();
$data['modules']=$this->flx_lib->moduler($data);
$this->load->view('login',$data);
}否则{
//嗯
}
}
公共功能检查_数据库($password){
$username=$this->input->post($username);
$result=$this->flx\u users->validate\u user($username,$password);
如果($结果){
//嗯
返回TRUE;
}否则{
$this->form_validation->set_消息('check_database','Invalid username或password');
返回FALSE;
}
}
以下是我的看法:
<div class="form-group has-feedback <?php error_exists('username'); ?>">
<input type="text" class="form-control" name="username" placeholder="Username" />
<span class="fa fa-user form-control-feedback "></span>
<?php echo form_error('username'); ?>
</div>
<div class="form-group has-feedback <?php error_exists('password'); ?>">
<input type="password" class="form-control" name="password" placeholder="Password">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
<?php echo form_error('password'); ?>
</div>
好的,我在代码中找到了错误。实际上,这是HMVC表单验证的一个问题
以下是正确答案的链接:
还是一样的结果(检查更新的代码,我第一次将设置规则与设置消息混合。
public function index() {
$this->form_validation->set_rules('username', 'Username', 'trim|required');
$this->form_validation->set_rules('password', 'Password', 'trim|required|callback_check_database',
array('check_database' => 'Invalid username or password.')
);
$this->form_validation->set_error_delimiters('<div class="error text-red">', '</div>');
if($this->form_validation->run() == FALSE) {
$data = array();
$data['modules'] = $this->flx_lib->moduler($data);
$this->load->view('login', $data);
} else {
//ok
}
}
public function check_database($password) {
$username = $this->input->post($username);
$result = $this->flx_users->validate_user($username, $password);
if($result) {
//ok
return TRUE;
} else {
return FALSE;
}
}
$this->form_validation->set_rules('field_name', 'Field Label', 'rule1|rule2|rule3',
array('rule2' => 'Error Message on rule2 for this field_name')
);
Solution:
1. Create MY_Form_validation.php file in libraries folder and paste following code in it.
if (!defined('BASEPATH')) exit('No direct script access allowed');
class MY_Form_validation extends CI_Form_validation
{
function run($module = '', $group = '')
{
(is_object($module)) AND $this->CI = &$module;
return parent::run($group);
}
}
And change if ($this->form_validation->run() == FALSE) to if ($this->form_validation->run($this) == FALSE) thats all folks..