[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Kohana extra validation
T1grOK
Раньше использовал свои методы в модели для добавления пользователя. То есть , создавал 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
Короче. Сделал так. В 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
Org
Ещё и не цепляются сообщения об ошибках, описанные в application/messages/validation/user.php

Вам спасибо - одной проблемой меньше!
Голову уже поломал sad.gif
sb108
Цитата (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
Гость_владимир
Цитата
  $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 на экран. Как убрать не понятно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.