Просмотров: 739

Как добавить свое правило для валидации формы в Codeigniter.

Codeigniter это фреймворк PHP, который имеет мощные средства для валидации данных HTML-форм.

fda_tool_validation1

Но, иногда бывают ситуации, что нужно произвести валидацию по каким-то особым правилам.

Например, я столкнулся с ситуацией, что мне нужно было произвести валидацию url-адреса, который вводился в одно из полей формы. Т.е. нужно было определить, пользователь ввел url-адрес или просто текст.

Вот решение, которое я нашел:

public function url_checking($str) {        
         $pattern = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
         if (!preg_match($pattern, $str))
         {
               return FALSE;
          }        
         return TRUE;
}
$config = array(
               array(
                     'field'   => 'full_link',
                     'label'   => 'full_link',
                     'rules'   => 'required|callback_url_checking'
                  )
);
$this->form_validation->set_rules($config);

По сути, здесь создается внешняя функция, которая использует регулярное выражение для проверки валидности введенного url. Если все валидно, выдаем TRUE, иначе FALSE.

Далее остается только добавить эту функцию в правила для валидации. Обратите внимание, что вызов валидации от сторонней функции вызывается служебным словом «callback_имя_функции».

Подобным образом можно создавать любые произвольные правила для валидации, которые вам могут только понадобиться.