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

Как сделать валидацию мультиселекта?
http://forum.kohanaframework.su/viewtopic.php?f=31&t=812
Страница 1 из 1

Автор:  julia [ 09 фев 2014, 17:57 ]
Заголовок сообщения:  Как сделать валидацию мультиселекта?

Как сделать валидацию мультиселекта (multiselest)?

Нужно, чтобы пользователь выбрал хоть один пункт.
Массив значений, из которых состоит мультиселек - это значения из БД, которые могут удаляться, добавляться.
Т.е. нет заранее известного четкого массива.

т.е. массив значений может быть array("0"=>"Детектив", "1"=>"Фантастика"), а после манипуляций с таблицей "Жанры" в БД,
стать array("0"=>"Детектив","2"=>"Лирика" ), а потом array("2"=>"Лирика","3"=>"Наука"),

key массива - это id из таблицы Жанры,
value массива -это жанры из таблицы Жанры.

Автор:  arhont [ 09 фев 2014, 18:24 ]
Заголовок сообщения:  Re: Как сделать валидацию мультиселекта?

Мне кажется просто сделать проверку $post[имя поля] если пустое, то выводить ошибку... В хелпере валидации вроде есть такое правило.

Автор:  julia [ 09 фев 2014, 20:56 ]
Заголовок сообщения:  Re: Как сделать валидацию мультиселекта?

arhont писал(а):
Мне кажется просто сделать проверку $post[имя поля] если пустое, то выводить ошибку... В хелпере валидации вроде есть такое правило.


Пробовала. Не получается. Выдает значение "не может быть пустым", а когда выбираешь пункт из мультиселекта, сообщение об ошибке не исчезает и данные не отправляются.

Автор:  WinterSilence [ 09 фев 2014, 21:02 ]
Заголовок сообщения:  Re: Как сделать валидацию мультиселекта?

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

Код:
function multiselect($values, array $options)
{
    foreach( (array) $values as $value)
    {
         if ( ! in_array($value, $options))
         {
              return FALSE;
         }
    }
    return TRUE;
}

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