Хотел бы высказать замечание по поводу автоматической проверки на пустоту.
В уроке написано следующее:
Метод rule принимает три параметра. Первый параметр — это имя поля (ключ массива). Если здесь указать TRUE, то правило будет применено для всех полей. Мы вполне можем переписать наш код вот так:
Код:
$post -> rule(TRUE, 'not_empty')
-> rule('email', 'email');
Если здесь указать TRUE, то правило будет применено для всех элементов исходного массива валидатора, а не тех полей которые указаны методами rule().
Честного говоря мне такое поведение не нравится, может это и баг, не знаю. Нужно проверять только те поля которые указаны в rule().
Если не указать все поля исходного массива в правилах rule(), возникнет ошибка при условии что не указанное поле пустое:
Код:
$POST = array('name' => '', 'pass' => 'passvalue');
$reg_validator = Validation::factory($POST);
$reg_validator->rule(TRUE, 'not_empty')->rule('pass', 'email');
$reg_validator->check();
$reg_validator->errors('validation');
Ошибка:
Код:
Undefined index: name
SYSPATH\classes\kohana\validation.php