Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Валидация полей pass и pass_conf, koh. 3.2 как?
http://forum.kohanaframework.su/viewtopic.php?f=31&t=225
Страница 1 из 2

Автор:  pimpys [ 23 июн 2012, 10:39 ]
Заголовок сообщения:  Валидация полей pass и pass_conf, koh. 3.2 как?

Здраствуйте! ;)
Как сделать эту тупую валидацию что мне не возвращало масив? :shock:
Подробное описание:
При нажатии на кнопку отправить выдает вместо сообщения array();, почему я так и не понял, искал, искал так и не нашол. Дума что дело в методе: "get_password_validation()", но там по логике всё правильно прописанно.
Прикреплю скрин*
Что мне делать?:)
ЗЫ: Это стандартный модуль Auth

Спасибо. ;)

Вложения:
Комментарий к файлу: *array()
array.png
array.png [ 8.4 КБ | Просмотров: 6971 ]

Автор:  pimpys [ 23 июн 2012, 10:56 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

Update:
Кстате даже когда поле password_confirm пусто, то тоже возвращает array();

Автор:  qed [ 23 июн 2012, 19:07 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

А что находится в этом массиве, он точно пустой? Покажите код, который всё это дело обрабатывает.

Автор:  pimpys [ 23 июн 2012, 21:00 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

qed писал(а):
А что находится в этом массиве, он точно пустой? Покажите код, который всё это дело обрабатывает.

Еслиб я знал что в массиве, яб не спрашивал наверное, нет он не пустой. Как его проверить я не знаю.
Код? Держите:

public function action_add(){
//Нажата кнопка
if(!empty($_POST)){
//Выбор из массива
$POST = Arr::extract($_POST, array('username', 'password', 'password_confirm', 'email', 'admin'));
$user = ORM::factory('user');
try{
//Создать пользователя
$user->create_user($_POST, array(
'username',
'password',
'email',
));
if(empty($_POST['admin'])){
$role = ORM::factory('role')->where('name', '=', 'login')->find();
$user->add('roles', $role);
}else{
$role = ORM::factory('role')->where('name', '=', 'login')->find();
$user->add('roles', $role);
$role = ORM::factory('role')->where('name', '=', 'admin')->find();
$user->add('roles', $role);
}
$this->request->redirect('/dmn/users');
}catch(ORM_Validation_Exception $exc){
$errors = $exc->errors('auth');
}
}
////////
var_dump($errors) возвращает:
////
array(3) { ["username"]=> string(61) "Поле: 'Логин' не может быть пустое!" ["email"]=> string(58) "Поле: 'Е-mail' не может быть пустое!" ["_external"]=> array(2) { ["password"]=> string(94) "Поле: 'password' должно быть не меньше 8 символов в длину!" ["password_confirm"]=> string(81) "Поле: 'password confirm' должно совпадать с password confirm!" } }

Автор:  qed [ 23 июн 2012, 21:16 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

Код:
$errors = $exc->errors('auth');

Я так понимаю, тут вы получаете ошибки, попробуйте сделать print_r($errors);


Сори, var_dump сразу не заметил.
Ну вот, в массиве с ошибками у вас есть подмассив "_external", обработайте его отдельно при выводе ошибок.

Автор:  pimpys [ 23 июн 2012, 21:22 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

qed писал(а):
Код:
$errors = $exc->errors('auth');

Я так понимаю, тут вы получаете ошибки, попробуйте сделать print_r($errors);

Яж написал результат var_dump'a!!!
1 проблему решил сейчас скрин прикреплю!
На скрине видно что поле проверяет само себя! Хотя в методе написано так:
public static function get_password_validation($values)
{
return Validation::factory($values)
->rule('password', 'min_length', array(':value', 8))
->rule('password_confirm', 'matches', array(':validation', ':field', 'password'));
}

Вложения:
Комментарий к файлу: *
array1.png
array1.png [ 7.85 КБ | Просмотров: 6952 ]

Автор:  pimpys [ 23 июн 2012, 21:27 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

qed писал(а):
есть подмассив "_external", обработайте его отдельно при выводе ошибок.

Как? :)

Автор:  qed [ 24 июн 2012, 02:51 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

Хм, интересно.. А если поля password и password_confirm совпадают, ошибка валидации появляется? Может что-то не так в файле с текстами ошибок?

Автор:  mamahtehok [ 24 июн 2012, 19:35 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

Вам нужно реализовать обработку массива ошибок например так
Код:
    if(isset($errors)){
?>
<div class="alert alert-error">
    <h4 class="alert-heading">Ошибка</h4>
    <?
    foreach ($errors as $error){
    if(is_array($error)){
        foreach ($error as $item) {
            if(is_array($item)){
                foreach ($item as $i) {
                    echo $i.'<br>';
                }
            } else {
                echo $item."<br>";
            }
        }
    } else {
        echo $error."<br>";
    }
}
?>
</div>
<?
    }
?>

Автор:  pimpys [ 25 июн 2012, 13:54 ]
Заголовок сообщения:  Re: Валидация полей pass и pass_conf, koh. 3.2 как?

mamahtehok писал(а):
Вам нужно реализовать обработку массива ошибок например так

Обработка ошибок была:) Но без is_array()
Спасибо помогло.

Полазви и поискав ответ на свой вопрос, нашол интересную тему, там моя проблема и описывалась. Сказали что броблема в валидации и дали супер мудреный способ решения. Но то такое:)

А теперь у меня еще один вопрос как теперь labels() здалать на русском?:)
В модели в public function labels() прописано норм, а в вид выдаёт в виде "так как есть". Вот поэтому и надо делать, по супер мудрёному способу:(

Страница 1 из 2 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/