Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 29 мар 2024, 12:28

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 12 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 23 июн 2012, 10:39 
Не в сети
Новичок
Аватара пользователя

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

Спасибо. ;)


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

_________________
:)
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2012, 10:56 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
Update:
Кстате даже когда поле password_confirm пусто, то тоже возвращает array();

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2012, 19:07 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
А что находится в этом массиве, он точно пустой? Покажите код, который всё это дело обрабатывает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2012, 21:00 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
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!" } }

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2012, 21:16 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Код:
$errors = $exc->errors('auth');

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


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


Последний раз редактировалось qed 23 июн 2012, 21:25, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2012, 21:22 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
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 КБ | Просмотров: 6851 ]

_________________
:)
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 июн 2012, 21:27 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
qed писал(а):
есть подмассив "_external", обработайте его отдельно при выводе ошибок.

Как? :)

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 июн 2012, 02:51 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Хм, интересно.. А если поля password и password_confirm совпадают, ошибка валидации появляется? Может что-то не так в файле с текстами ошибок?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 июн 2012, 19:35 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Вам нужно реализовать обработку массива ошибок например так
Код:
    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>
<?
    }
?>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 июн 2012, 13:54 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
mamahtehok писал(а):
Вам нужно реализовать обработку массива ошибок например так

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

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

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

_________________
:)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group