Podręcznik użytkownika CodeIgniter wersja 2.2.1


Walidacja formularza

CodeIgniter dostarcza klasę, która kompleksowo zajmuje się walidacją formularza i przygotowaniem danych - pozwala to na zminimalizowanie ilości kodu, którego nie musimy już pisać.

 

Przegląd

Zanim przejdziemy do przedstawienia podejścia do walidacji danych w CodeIgniterze, opiszmy scenariusz idealny:

  1. Formularz zostaje wyświetlony.
  2. Wypełniasz go i wysyłasz.
  3. Jeśli coś źle wpisałeś albo pominąłeś wymagane pole formularza, ponownie wyświetla się formularz zawierający dane, które wpisałeś oraz komunikat o błędzie, który opisuje zaistaniały problem.
  4. Ten proces powtarza się do momentu, aż wyślesz poprawny formularz.

Po stronie serwera, skrypt musi:

  1. Sprawdzić jakie dane są wymagane.
  2. Zweryfikować, czy dane mają poprawny typ i spełniają odpowiednie kryteria. Dla przykładu, jeśli wysłana została nazwa użytkownika, musi ona zostać zweryfikowana pod kontem dozwolonych znaków. Pole nie może być krótsze niż określona liczna znaków i nie może przekraczać maksymalnej dozwolonej liczby znaków. Pole nie może również zawierać nazwy już isniejącego użytkownika lub zawierać jakiegoś zarezerwowanego słowa, itd.
  3. Przefiltrować dane dla bezpieczeństwa.
  4. Odpowiednio przygotować dane jeśli jest taka potrzeba (wykonanie różnych operacji, np. trim, czy encode itd.)
  5. Przygotować dane do dodania do bazy danych.

Chociaż nie ma nic skomplikowanego w powyższym procesie, to wymaga on zazwyczaj znacznej ilości kodu. Aby wyświetlać wiadomości błędu potrzeba wielu struktur kontrolnych, umiejscowionych w kodzie HTML. Walidacja formularza jest teoretycznie prosta do stworzenia, ale o wiele trudniej ją zaimplementować.

 

Tutorial walidacji formularza

Poniżej znajduje się "praktyczny" tutorial stosowania walidacji formularza.

Aby zaimplemetować formularz walidacji, będziesz potrzebował trzech rzeczy:

  1. Pliku widoku zawierającego formularz.
  2. Plik widoku zawierający wiadomość o "sukcesie", która będzie wyświetlana po poprawnym wysłaniu formularza.
  3. Funkcji kontrolera, aby odbierać i przetwarzać wysłane dane.

Stwórzmy te trzy rzeczy, opierając się przy tym na przykładowym formularzu rejestracji użytkownika.

Formularz

Wykorzystując edytor tekstu, stwórz plik o nazwie myform.php. Wklej do niego poniższy kod i zachowaj plik w folderze applications/views/:

Strona sukcesu

Wykorzystując edytor tekstu, stwórz plik o nazwie formsuccess.php. Wklej do niego poniższy kod i zachowaj plik w folderze applications/views/:

Kontroler

Wykorzystując edytor tekstu, stwórz plik o nazwie form.php. Wklej do niego poniższy kod i zachowaj plik w folderze applications/controllers/:

Przetestuj!

Aby przetestować Twój formularz, odwiedź swoją stronę używając adresu URL podobnego do tego:

example.com/index.php/form/

Jeśli wyślesz formularz, powinien on zostać ponownie wczytany. To dlatego, że nie określiłeś jeszcze żadnych reguł walidacji.

Z racji tego, że nie kazałeś klasie Form Validation aby cokolwiek walidowała, zwraca ona domyślnie wartość FALSE (boolean false). Funkcja run() zwraca TRUE tylko wtedy, jeśli spełnione zostaną wszystkie reguły walidacji.

Wyjaśnienie

Zauważyłeś pewnie kilka rzeczy w związku z powyższymi stronami:

Plik form (myform.php) jest zwykłym formularzem z kilkoma wyjątkami:

  1. Używa helpera form, aby utworzyć tag otwierający formularz. Z technicznego punku widzenia, nie jest to wymagane. Możesz utworzyć formularz korzystając ze standardowego kodu HTML. Jednak korzyścią płynącą z wykorzystania helpera jest to, że generuje on za Ciebie adres URL, który oparty jest na zmiennej z Twojego pliku konfiguracyjnego. To czyni Twoją aplikację bardziej przenośną w przypadku zmiany adresów URL.
  2. Nad formularzem zauważysz wywołanie następującej funkcji: <?php echo validation_errors(); ?>

    Ta funkcja zwróci wiadomości błędu, które zostaną przekazane przez walidator. Jeśli nie będzie żadnych wiadomości błędów - zwróci pusty ciąg.

Kontroler (form.php) ma tylko jedną funkcję: index(). Ta funkcja inicjalizuje klasę walidacji i ładuje helper form oraz helper URL, które są używane w plikach widoku. Funkcja uruchamia również procedurę walidacji. Bazując na tym, czy walidacja zakończyła się sukcesem, czy nie - funkcja wyświetla stronę sukcesu lub formularz.

Ustalanie reguł walidacji

CodeIgniter pozwala na ustalenie dowolnej liczby reguł walidacji dla pola formularza, za pomocą funkcji set_rules():

$this->form_validation->set_rules();

Powyższa funkcja przyjmuje trzy parametry:

  1. Nazwa pola - dokładnie ta sama nazwa, którą nadałeś polu formularza
  2. Nazwa "przyjazna" dla pola, która będzie włączona do wiadomości o błędzie. Dla przykładu, jeśli Twoje pole ma nazwę "user", możesz nadać mu "przyjazną" nazwę "Użytkownik". Uwaga: Jeśli chciałbyś aby nazwa dla pola była przechowywana w pliku językowym, zapoznaj się z częścią Tłumaczenie nazw pól.
  3. Reguły walidacji dla tego pola formularza.


Oto przykład. Do Twojego kontrolera (form.php), dodaj następujący kod - zaraz pod funkcją inicjalizującą walidację:

$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');

Twój kontroler powinien teraz wyglądać tak:

Teraz wyślij formularz z pustymi polami, a powinieneś zobaczyć wiadomości o błędach. Jeśli wyślesz formularz z wypełnionymi wszystkimi polami, powinieneś zobaczyć stronę obwieszczającą sukces.

Uwaga: Pola formularza nie są wypełniane ponownie danymi kiedy wystąpi błąd walidacji. Niedługo do tego dojdziemy.

Ustalanie reguł walidacji za pomocą tablicy

Zanim przejdziemy dalej, warto zaznaczyć, że wszystkie reguły walidacji można przypisać do tablicy - o ile preferujesz taki sposób pracy. Jeśli chcesz skorzystać z takiej możliowści musisz w odpowiedni sposób nazwać klucze w tablicy:

$config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Username',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password',
                     'label'   => 'Password',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'passconf',
                     'label'   => 'Password Confirmation',
                     'rules'   => 'required'
                  ),   
               array(
                     'field'   => 'email',
                     'label'   => 'Email',
                     'rules'   => 'required'
                  )
            );

$this->form_validation->set_rules($config);

Reguły kaskadowe

CodeIgniter pozwala na łączenie wielu reguł razem. Wypróbujmy to. Zmień swoje reguły w trzecim parametrze funkcji, w ten sposób:

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');

Powyższy kod ustanawia następujące reguły:

  1. Pole username nie może być krótsze niż 5 znaków i dłuższe niż 12 znaków.
  2. Pole password musi być takie samo jak pole passconf.
  3. Pole email musi posiadać poprawnie sformatowany adres email.

Wypróbujmy to! Wyślij formularz, który będzie zawierał błędne dane pod względem walidacji, a zobaczysz nowe wiadomości błędu, które odpowiadają Twoim polom formularza. Jest wiele dostępnych reguł, o których możesz przeczytać w spisie reguł walidacji.

Przygotowywanie danych

W funkcji walidacji, której używaliśmy powyżej można ponadto przygotowywać dane na wiele sposóbów. Dla przykładu, możesz ustawić takie reguły:

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

W powyższym przykładzie używamy funkcji trim, MD5 oraz "przepuszczamy" pole username przez funkcję "xss_clean", która usuwa złośliwe dane.

Każda natywna funkcja PHP, która przyjmuje na wejściu jeden parametr, może być użyta jako reguła, np. htmlspecialchars, trim, MD5, itp.

Uwaga: Zazwyczaj będziesz chciał używać funkcji przygotowujących dane po wystąpieniu reguł walidacji, ponieważ kiedy wystąpi błąd, dane zostaną pokazane w polu formularza.

Ponowne wypełnianie formularza

Do tej pory mieliśmy do czynienia jedynie z błędami. Przyszedł czas na ponowne wypełnianie pól formularza wcześniej wysłanymi danymi. CodeIgniter oferuje kilka funkcji pomocniczych, które na to pozwalają. Jedną z nich, którą będziesz używać najczęściej jest:

set_value('field name')

Otwórz plik widoku myform.php i zaktualizuj wartość value w każdym polu, używając funkcji set_value():

Nie zapomnij dodać nazwy pola do każdego wystąpienia funkcji set_value()!

Teraz wczytaj ponownie stronę i wyślij formularz w taki sposób, aby zawierał błędy. Pola formularza powinny zostać ponownie wypełnione.

Uwaga: Sekcja spisu funkcji zawiera funkcje, które pozwolą na ponownie wypełnianie pól formularza, takich jak: select, radio i checkbox.

Ważna uwaga: Jeśli używasz tablicy jako nazwy dla pola formularza, musisz podać go jako tablicę dla funkcji. Przykład:

<input type="text" name="colors[]" value="<?php echo set_value('colors[]'); ?>" size="50" />

Po więcej informacji przejdź do sekcji używanie tablic jako nazw pól, którą znajdziesz poniżej.

Callbacks: Twoje własne funkcjie walidacji

System walidacji wspiera odwołania do Twoich własnych funkcji walidacji. Pozwala to na rozszerzenie klasy walidacji, aby spełniała Twoje oczekiwania. Dla przykładu, jeśli musisz wykonać zapytanie do bazy danych, aby zobaczyć, czy użytkownik podał unikalną nazwę użytkownika, możesz stworzyć funkcję, która to zrobi. Stwórzmy podobny przykład.

W kontrolerze zmień regułę "username" w ten sposób:

$this->form_validation->set_rules('username', 'Username', 'callback_username_check');

Teraz dodaj nową funkcję o nazwie username_check do kontrolera. Twój kontroler powinien wyglądać teraz w ten sposób:

Załaduj ponownie stronę i wyślij formularz z wartością "test" dla pola username. Dane dla tego pola zostały przekazane do funkcji callback.

Aby odwołać się do funkcji callback, dodaj nazwę funkcji do reguł walidacji i dodaj tam do niej prefix "callback_".

Możesz również przetwarzać dane z formularza, które są przekazywane do funkcji callback i zwracać je. Jeśli Twój callback zwraca cokolwiek innego niż TRUE/FALSE, to zwrócone dane są traktowane jako nowe dane dla danego pola formularza.

Ustawianie wiadomości błędów

Wszystkie natywne wiadomości błędu, znajdują się w następującym pliku językowym: language/english/form_validation_lang.php

Aby utworzyć swoje własne wiadomości błędu, możesz edytować ten plik lub użyć następującej funkcji:

$this->form_validation->set_message('reguła', 'Wiadomość błędu');

Gdzie reguła odwołuje się do konkretniej reguły, a Wiadomość błędu to tekst, który ma zostać zwrócony.

Jeśli dodasz znak %s do Twojej wiadomości błędu, to zostanie ona zastąpiona "przyjazną" nazwą pola, która została użyta podczas ustalania reguły walidacji dla tego pola.

W powyższym przykładzie z funkcją callback, wiadomość błędu została ustawiona poprzez przypisanie nazwy funkcji:

$this->form_validation->set_message('username_check')

Możesz również nadpisać każdą wiadomość błędu, która znajduje się w pliku językowym. Dla przykładu, aby zmienić wiadomość dla reguły "required", możemy zrobić tak:

$this->form_validation->set_message('required', 'Twoja własna wiadomość błędu');

Tłumaczenie nazw pól

Jeśli chciałbyś przechowywać "przyjazne" nazwy dla pól, które przekazałeś do funkcji set_rules() w pliku językowym i tym samym być w stanie oferować ich różne wersje językowe - oto sposob:

Najpierw, poprzedź Twoje "przyjazne" nazwy dla pola formularza słowem lang:, tak jak w przykładzie:

$this->form_validation->set_rules('first_name', 'lang:first_name', 'required');

Teraz w pliku językowym dodaj nazwę do tablicy (bez prefixu):

$lang['first_name'] = 'First Name';

Uwaga: Jeśli przechowujesz nazwy dla pól w pliku językowym, który nie jest automatycznie ładowany przez CI, musisz pamiętać aby załadować dany plik w kontrolerze w ten sposób:

$this->lang->load('nazwa_pliku_jezykowego');

Przejdź do strony o klasie Language aby dowiedzieć się więcej.

Zmienianie tagów, które otaczają wiadomości błędu

Domyślnie, klasa Form Validation dodaje tag paragrafu (<p>) dookoła każdej wyświetlanej wiadomości błędu. Możesz zmienić te tagi globalnie lub indywidualnie.

  1. Globalna zmiana znaczników, które otaczają wiadomości błędu

    Aby globalnie zmienić znaczniki otaczające wiadomości błędu, możesz dodać do funkcji kontrolera następujący kod - zaraz po załadowaniu bibioteki Form Validation:

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    W tym przykładzie, przeszliśmy na używanie tagu div.

  2. Indywidualna zmiana znaczników, które otaczają wiadomości błędu

    Do każdej z dwóch funkcji, które generują wiadomości błędu, można dodać parametry:

    <?php echo form_error('field name', '<div class="error">', '</div>'); ?>

    lub:

    <?php echo validation_errors('<div class="error">', '</div>'); ?>

Wyświetlanie indywidualnych wiadomości błędu

Jeśli wolisz pokazywać wiadomość błędu zaraz obok pola formularza, zamiast całą listę błędów, możesz użyć finkcji form_error()

Wypróbuj to! Zmień swój formularz, aby wyglądał w ten sposób:

Jeśli nie będzie żadnych błędów, nic nie zostanie wyświetlone. Jeśli pojawią się blędy, zostaną one wyświetlone.

Ważna uwaga: Jeśli używasz tablicy jako nazwy dla pola formularza, to do funkcji musisz przypisać nazwę jako tablicę. Przykład:

<?php echo form_error('options[size]'); ?>
<input type="text" name="options[size]" value="<?php echo set_value("options[size]"); ?>" size="50" />

Po więcej informacji przejdź do sekcji używanie tablicy jako nazwy dla pola formularza.

 

Przechowywanie reguł walidacji w pliku konfiguracyjnym

Fajną opcją dla klasy Form Validation jest to, że pozwala ona na przechowywanie Twoich reguł walidacji dla całej aplikacji w pliku konfiguracyjnym. Możesz ułożyć reguły w grupy. Grupy mogą być ładowane automatycznie, kiedy wywoływany jest opdowiedni kontroler/metoda lub ręcznie w zależności od potrzeb.

Jak przechowywać reguły.

Aby przechowywać Twoje reguły walidacji, po prostu utwórz plik o nazwie form_validation.php w katalogu application/config/. W tym pliku utworzysz tablicę o nazwie $config, która zawierać będzie reguły walidacji. Tak jak pokazaliśmy wcześniej, tablica walidacji, będzie miała ten kształt:

$config = array(
               array(
                     'field'   => 'username',
                     'label'   => 'Username',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'password',
                     'label'   => 'Password',
                     'rules'   => 'required'
                  ),
               array(
                     'field'   => 'passconf',
                     'label'   => 'Password Confirmation',
                     'rules'   => 'required'
                  ),   
               array(
                     'field'   => 'email',
                     'label'   => 'Email',
                     'rules'   => 'required'
                  )
            );

Twój plik z regułami walidacji, będzie ładowany automatycznie i używany kiedy wywołasz funkcję run().

Zauważ, że Twoja tablica MUSI mieć nazwę $config.

Tworzenie zestawów reguł

Aby zorganizować Twoje reguły walidacji w grupy, należy podzielić tablicę na "subtablice". Następujący przykład pokazuje jak ustawić zestaw dwóch grup walidacji. Na potrzeby tego przykładu, grupy noszą nazwę "signup" i "email". Ty możesz nazwać własne grupy jak tylko chcesz:

$config = array(
                 'signup' => array(
                                    array(
                                            'field' => 'username',
                                            'label' => 'Username',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'password',
                                            'label' => 'Password',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'passconf',
                                            'label' => 'PasswordConfirmation',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'email',
                                            'label' => 'Email',
                                            'rules' => 'required'
                                         )
                                    ),
                 'email' => array(
                                    array(
                                            'field' => 'emailaddress',
                                            'label' => 'EmailAddress',
                                            'rules' => 'required|valid_email'
                                         ),
                                    array(
                                            'field' => 'name',
                                            'label' => 'Name',
                                            'rules' => 'required|alpha'
                                         ),
                                    array(
                                            'field' => 'title',
                                            'label' => 'Title',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'message',
                                            'label' => 'MessageBody',
                                            'rules' => 'required'
                                         )
                                    )                          
               );

Wywoływanie określonej grupy walidacji

W celu wywołania określonej grupy walidacji, należy przypisać nazwę danej grupy do funkcji run(). Dla przykładu, aby wywołać grupę signup, zrobisz w ten sposób:

if ($this->form_validation->run('signup') == FALSE)
{
   $this->load->view('myform');
}
else
{
   $this->load->view('formsuccess');
}

Kojarzenie funkcji kontrolera z grupą walidacji

Alternatywną (i bardziej zautomatyzowaną) metodą wywoływania grup walidacji, jest nazywanie ich stosownie do nazwy klasy/funkcji kontrolera, z którą dana grupa będzie użyta. Dla przykładu, powiedzmy że mamy kontroler o nazwie Member i funkcję o nazwie signup. Oto jak taka klasa mogłaby wyglądać:

<?php

class Member extends CI_Controller {

   function signup()
   {      
      $this->load->library('form_validation');
            
      if ($this->form_validation->run() == FALSE)
      {
         $this->load->view('myform');
      }
      else
      {
         $this->load->view('formsuccess');
      }
   }
}
?>

W pliku konfiguracyjnym walidacji, nazwiesz Twoją grupę reguł member/signup:

$config = array(
           'member/signup' => array(
                                    array(
                                            'field' => 'username',
                                            'label' => 'Username',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'password',
                                            'label' => 'Password',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'passconf',
                                            'label' => 'PasswordConfirmation',
                                            'rules' => 'required'
                                         ),
                                    array(
                                            'field' => 'email',
                                            'label' => 'Email',
                                            'rules' => 'required'
                                         )
                                    )
               );

Kiedy grupa reguł jest nazwana identycznie jak nazwa klasy/funkcji kontrolera, zostanie ona automatycznie użyta w momencie wywołania funkcji run().

 

Używanie tablic jako nazw dla pól formularza

Klasa Form Validation wspiera użycie tablic jako nazw pól. Spójrz na ten przykład:

<input type="text" name="options[]" value="" size="50" />

Jeśli użyjesz tablicy jako nazwy pola, musisz użyć DOKŁADNIE takiej samej nazwy tablicy w funkcjach pomocniczych, które wymagają nazwy pola oraz dla reguł walidacji dla danego pola.

Dla przykładu, aby ustawić regułę dla powyższego pola, zrobiłbyś w ten sposób:

$this->form_validation->set_rules('options[]', 'Options', 'required');

Aby pokazać błąd dla powyższego pola, zrobiłbyś w ten sposób:

<?php echo form_error('options[]'); ?>

Aby wypełnić pole ponownie, zrobiłbyś w ten sposób:

<input type="text" name="options[]" value="<?php echo set_value('options[]'); ?>" size="50" />

Możesz również użyć tablic wielowymiarowych jako nazw pól. Dla przykładu:

<input type="text" name="options[size]" value="" size="50" />

Lub nawet:

<input type="text" name="sports[nba][basketball]" value="" size="50" />

Tak samo jak w naszym pierwszym przykładzie, musisz użyć dokładnie takiej samej tablicy jako nazwy w funkcji pomocniczej:

<?php echo form_error('sports[nba][basketball]'); ?>

Jeśli używasz pól typu checkbox (lub innych pól), które mają wiele opcji, nie zapomnij zostawić pustej tablicy dla każdej opcji, w ten sposób wszystkie opcje zostaną dodane do tablicy POST:

<input type="checkbox" name="options[]" value="red" />
<input type="checkbox" name="options[]" value="blue" />
<input type="checkbox" name="options[]" value="green" />

Lub jeśli używasz tablicy wielowymiarowej:

<input type="checkbox" name="options[color][]" value="red" />
<input type="checkbox" name="options[color][]" value="blue" />
<input type="checkbox" name="options[color][]" value="green" />

Kiedy używasz funkcji pomocniczej, równiez musisz dołączyć pustą tablicę:

<?php echo form_error('options[color][]'); ?>

 

Spis reguł walidacji

Poniżej znajduje się lista wszystkich natywnych reguł, które są dostępne:

Reguła Parametr Opis Przykład
required Nie Zwraca FALSE jeśli element formularza jest pusty.  
matches Tak Zwraca FALSE jeśli element formularza nie jest taki sam jak elemet w parametrze. matches[nazwa_pola]
min_length Tak Zwraca FALSE jeśli element formularza jest krótszy niż wartość parametru. min_length[6]
max_length Tak Zwraca FALSE jeśli element formularza jest dłuższy niż wartość parametru. max_length[12]
exact_length Tak Zwraca FALSE jeśli element formularza nie ma dokładnie takiej długości jak wartość parametru. exact_length[8]
greater_than Tak Zwaraca FALSE jeśli element formularza jest mniejszy niż wartość parametru lub nie jest wartością numeryczną. greater_than[8]
less_than Tak Zwaraca FALSE jeśli element formularza jest większy niż wartość parametru lub nie jest wartością numeryczną. less_than[8]
alpha Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż znaki alfabetyczne.  
alpha_numeric Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż znaki alfa-numeryczne.  
alpha_dash Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż znaki alfa-numeryczne, podkreślenia lub myślniki.  
numeric Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż znaki numeryczne.  
integer Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż wartość integer.  
decimal Tak Zwraca FALSE jeśli element formularza nie ma postaci decimal odpowiadajacej tej z parametru.  
is_natural Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż liczbę naturalną: 0, 1, 2, 3, itd.  
is_natural_no_zero Nie Zwraca FALSE jeśli element formularza zawiera cokolwiek innego niż liczbę naturalną, ale nie zero: 1, 2, 3, itd.  
valid_email Nie Zwraca FALSE jeśli element formularza nie posiada poprawnie sformatowanego adresu email.  
valid_emails Nie Zwraca FALSE jeśli którakolwiek z dostarczonych wartości oddzielona przecinkiem nie jest poprawnie sformatowanym adresem email.  
valid_ip Nie Zwraca FALSE jeśli podany adres IP nie jest poprawny.  
valid_base64 Nie Zwraca FALSE jeśli dostarczony ciąg zawiera cokolwiek innego niż poprawne znaki Base64.  

Uwaga: Te reguły mogą być również wywołane jako dyskretne funkcje. Dla przykładu:

$this->form_validation->required($string);

Uwaga: Możesz również użyć każdej natywnej funkcji PHP, która wymaga jednego parametru.

 

Spis funkcji przygotowujących dane

Poniżej znajduje się lista funkcji przygotowujących dane:

Nazwa Parametr Opis
xss_clean Nie Przepuszcza dane przez funkcję filtrującą XSS, która jest opisana na stronie klasy Input.
prep_for_form Nie Konwertuje znaki specjalne, aby dane HTML mogły zostać pokazane w polu formularza, bez jego psucia.
prep_url Nie Dodaje "http://" do adresu URL, jeśli go brakuje.
strip_image_tags Nie Wycina tagi HTML z odnośników do obrazów - pozostawiając sam adres URL.
encode_php_tags Nie Konwertuje tagi PHP do encji.

Uwaga: Możesz również używać każdej natywnej funkcji PHP, która dopuszcza jeden parametr, jak trim, htmlspecialchars, urldecode, itd.

 

Spis funkcji

Następujące funkcje są przeznaczone do użytku w Twoim kontrolerze.

$this->form_validation->set_rules();

Pozwala na określenie reguł walidacji, jak opisano w tutorialu powyżej:

$this->form_validation->run();

Uruchamia walidację formularza. Zwraca TRUE w przypadku sukcesu lub FALSE, w przypadku niepowodzenia. Możesz opcjonalnie przypisać nazwę grupy reguł walidacji, jak opisano to w sekcji: przechowywanie reguł walidacji w pliku konfiguracyjnym.

$this->form_validation->set_message();

Pozwala na ustawienie własnego komunikatu błędu. Zobacz sekcję: ustawianie wiadomości błędu

 

Spis funkcji pomocniczych

Następujące funkcje pomocnicze są dostępne do użycia w widokach, które zawierają formularz. Zauważ, że są to funkcje proceduralne, więc nie jest wymagane poprzedzanie ich wywolaniem biblioteki $this->form_validation.

form_error()

Pokazuje indywidualny komunikat błędu, powiązany z nazwą pola przypisaną do funkcji. Przykład:

<?php echo form_error('username'); ?>

Znaczniki, które otaczają komunikat błędu, mogą zostać opcjonalnie określone. Zobacz sekcję zmienianie tagów, które otaczają wiadomości błędu.

validation_errors()

Pokazuje wszystkie komunikaty błędu jako ciąg znaków: Przykład:

<?php echo validation_errors(); ?>

Znaczniki, które otaczają komunikat błędu, mogą zostać opcjonalnie określone. Zobacz sekcję zmienianie tagów, które otaczają wiadomości błędu.

set_value()

Pozwala na ustawienie wartości input lub textarea dla formularza. Pierwszy parametr, jako argument przyjmuje nazwę pola formularza. Drugi (opcjonalny) parametr pozwala na określenie domyślnej wartości dla pola formularza. Przykład:

<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />

Powyższy formularz będzie miał wartość "0", kiedy zostanie wczytany po raz pierwszy.

set_select()

Jeśli używasz pola formularza typu <select>, ta funkcja pozwoli na zaznaczenie opcji, która została wybrana. Pierwszy parametr musi zawierać nazwę pola formularza, drugi parametr musi zawierać wartości dla elementu, a trzeci parametr (opcjonalny), pozwala na ustawienie domyślej wartości (używając wartości TRUE/FALSE).

Przykład:

<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option>
</select>

set_checkbox()

Pozwala na wyświetlanie pola typu checkbox w stanie, w którym zostało wysłane. Pierwszy parametr musi zawierać nazwę pola checkbox, drugi parametr musi zawierać wartośc pola checkbox, natomiast trzeci parametr (opcjonalny) pozwala na ustawienie danego elementu jako domyślny (używając wartości TRUE/FALSE). Przykład:

<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1'); ?> />
<input type="checkbox" name="mycheck[]" value="2" <?php echo set_checkbox('mycheck[]', '2'); ?> />

set_radio()

Pozwala na wyświetlanie pola radio w stanie, w którym zostało wysłane. Ta funkcja jest identyczna jak set_checkbox(), która została przedstawiona powyżej.

<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />