<?php
class Form extends CI_Controller {
public function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('confpassword', 'Password', 'required|matches[password]', 'callback__matcherror');//$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
//$this->form_validation->set_rules('email', 'Email', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('login');
}
else
{
$this->load->view('insert_dream');
}
}
public function _matcherror() {
$this->form_validation->set_message('_matcherror', 'Passwords should match');
return FALSE;
}
}
?>
Я новичок в Codeigniter. Приведенный выше код не отображает пароли должны соответствовать сообщению об ошибке. Что-то не так с обратным вызовом или я что-то упустил.
Взглянуть Вот. Вам не нужно делать обратный звонок.
Вы проходите callback__matcherror
как четвертый параметр set_rules
функция. Это должен быть 3-й параметр. Используйте этот способ
$this->form_validation->set_rules('confpassword', 'Password', 'required|matches[password]|callback__matcherror');
Заметка
Вы получите это сообщение об ошибке, если ваши поля пароля совпадают. Поскольку вы применяете там правило 3, 3-е правило (call_back_function) будет применяться, когда второе правило будет успешным. Ваше второе правило будет действовать при совпадении паролей.
matches[password]
автоматически проверит пароль. Вам не нужно использовать функцию обратного вызова callback__matcherror