Я создал собственный класс проверки в воспламенителе кода.
class MY_Form_validation extends CI_Form_validation {
function __construct($rules = array()) {
parent::__construct($rules);
}
public function required_fr($str) {
var_dump('test');
if (!is_array($str)) {
return (trim($str) == '') ? FALSE : TRUE;
} else {
return (!empty($str));
}
}
}
Мой контроллер выглядит так:
class Ticket extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="alert alert-danger alert-dismissable"><a aria-hidden="true" data-dismiss="alert" class="close" type="button">×</a>', '</div>');
}
public function new_ticket() {
$this->form_validation->set_rules('category', 'categorie', 'required_fr');
if ($this->form_validation->run() == TRUE) {
...
}
}
}
Если я не заполню поле 'category', валидатор 'required_fr' не будет вызван. Я никогда не получаю сообщение «test» из var_dump на моем экране.
Если я добавлю «required» вместо «required_fr», я получу правильное сообщение, связанное с required на моей странице. Если я добавлю required_fr, я не получу никакого сообщения.
Я также попытался добавить callback_ в функцию set_rules проверки формы, но, похоже, это тоже не сработало.
Если я помещу var_dump в конструктор класса MY_Form_validation, я вижу, что он появляется на моей странице, поэтому загружается пользовательский класс проверки.
Что мне не хватает?