T1grOK
23.05.2013 - 21:07
Раньше использовал свои методы в модели для добавления пользователя. То есть , создавал Validation передавал массив данных, описывал правила валидации, проверял (check), передавал в модель и сохранял(ну или пользовался исключительно методами rules, labels, filters для описания данных).
Сейчас же особых требований нет, думаю заюзаю стандартную наработку ORM - Model_Auth_User. Так вот, есть такой метод create_user, который как можно догадаться добавляет пользователя в базу. В этом методе используется extra validation, который как оказалось в случае ошибок напрочь игнорирует labels.
То есть в ошибках extra validation(_external) получим, например:
Поле "password" не может быть пустым
Хотя должны получить
Поле "Пароль" не может быть пустым
На данный момент только расковырял ORM, заметил, что не extra validation формируется с применением методов ORM и содержит объект Model_User в котором и присутствуют labels, а extra validation, является классическим объектом Validation. Решение пока не придумал.
Никто такой проблемой не заморачивался?
Версия Kohana 3.3.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
T1grOK
23.05.2013 - 21:42
Короче. Сделал так. В Kohana_ORM, метод check, строку
$extra_errors = ($extra_validation AND ! $extra_validation->check());
Заменил на
$extra_errors = FALSE;
if($extra_validation){
$labels = $this->labels();
foreach($labels as $field => $label){
$extra_validation->label($field, $label);
}
$extra_errors = !$extra_validation->check();
}
И все дела.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Ещё и не цепляются сообщения об ошибках, описанные в application/messages/validation/user.
phpВам спасибо - одной проблемой меньше!
Голову уже поломал
Цитата (Org @ 25.07.2013 - 19:17) |
Ещё и не цепляются сообщения об ошибках, описанные в application/messages/validation/user.php |
Просто создайте папку user (это имя модели, где происходит валидация). И туда закиньте файл _external.php с описанием ошибок.
Примерно, вот так должно быть:
application/messages/validation/user/_external.php
В папке: application/messages/validation должен лежать файл user.php
Гость_владимир
28.02.2015 - 23:16
Цитата |
$extra_errors = FALSE; if($extra_validation){ $labels = $this->labels(); foreach($labels as $field => $label){ $extra_validation->label($field, $label); }
$extra_errors = !$extra_validation->check(); } |
Спасибо, нормально работает.
К сожалению осталась ещё одна проблема. никак не пойму что с ней делать?
Перед выводом ошибки extra validation(_external) выводиться слово Array на экран. Как убрать не понятно.