Не удается вернуть сообщение об ошибке в обратном вызове CodeIgniter 3

У меня есть проблема в моем коде. Я создаю простой логин, используя CI3 для моего небольшого проекта. Моя проблема в том, что у меня есть сообщение об ошибке при проверке обратного вызова.

Вот ошибка, которую я получаю всякий раз, когда пытаюсь проверить свою форму.

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;
}

}

Вот мой взгляд:

<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>

ты можешь помочь мне с этим? Я использую CI3 с HMVC

0

Решение

Хорошо, я нашел ошибку в моем коде. На самом деле это проблема с проверкой формы HMVC.

Вот ссылка для правильного ответа:
CodeIgniter — Невозможно получить доступ к сообщению об ошибке, соответствующему имени вашего поля Пароль. (Pword_check)

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..
0

Другие решения

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')
);
0

По вопросам рекламы [email protected]