Klasa Validator

Pobieranie oraz walidacja parametrów w Amelii jest znacznie ułatwiona za pomocą klasy walidatora. Obiekt walidatora zawiera następujące metody pozwalające pobierać i weryfikować parametry żądania (generując błędy gdy walidacja się nie powiedzie):

public function validateFromCleanURL($param_number, $config = null)

public function validateFromRequest($param_name, $config = null) 

public function validateFromGet($param_name, $config = null) 

public function validateFromPost($param_name, $config = null)

public function validateFromCookie($param_name, $config = null)

Parametr $config przekazywany jest w formie tablicy, której prosty opis umieszczono poniżej:

Funkcje zwracają wartość po walidacji i opcjonalnym przetwarzaniu (dla opcji: escape,trim,int,float,date)

Wszystkie poniższe parametry są opcjonalne.

[ 
'escape' => true | false | 'script', // true jest domyślne
'trim' => true | false, // usuwa białe znaki z początku i końca parametru - false jest domyślne
'required' => true , // czy wymagane
'required_message' => 'message...', //komunikat wymagalności parametru - generowany gdy brak

'min_length' => int, //min liczba znaków
'max_length' => int, //max liczba znaków
'email' => true, //walidacja adresu email
'url' => true, //walidacja adresu url
'numeric' => true, //czy wartość numeryczna (int lub float)
'int' => true, //czy wartość całkowita
'float' => true, //czy wartość zmiennoprzecinkowa
'min' => int | float, // czy nie mniejsze - tylko dla numeric, int lub float
'max' => int | float, // czy nie większe - tylko dla numeric, int lub float
'date_format' => format, //czy data zgodna z podanym formatem np: 'Y-m-d'
'regexp' => regular expression, //czy zgodne z podanym wyrażeniem regularnym

'validator_message' => 'message...', //komunikat walidatora - generowany gdy parametr niepoprawny
'message_type' => error | warning | info, //jaki typ komunikatu wygenerować - domyślnie error
]

przykład:

$v = new Validator();
$name = $v->validateFromRequest("imie", [
  'trim' => true,
  'required' => true,
  'required_message' => 'Imię jest wymagane',
  'min_length' => 3,
  'max_length' => 30,
  'validator_message' => 'Imię powinno mieścić się pomiędzy 3 i 30 znakami',
]);

$age = $v->validateFromRequest("wiek", [
  'int' => true,
  'validator_message' => 'Wiek: podaj poprawną liczbę całkowitą',
]);

Przykład pobrania parametru nr 1 z clean url's: http://localhost/aplikacja/public/akcja/param1/param2/param3

$clean_param1 = $v->validateFromCleanURL(1, [
  'int' => true,
  'validator_message' => 'Niepoprawna liczba całkowita',
]);

UWAGA !

Przy ustawionym, int, float lub date_format, po poprawnej walidacji walidator zwraca wartość w odpowiednim typie: odpowiednio int, float oraz obiekt DateTime. Jest to szczególnie ważne w przypadku daty, ponieważ w wyniku walidator zwróci obiekt DateTime (zobacz dokumentację https://www.php.net/manual/en/class.datetime.php).

Aby wyświetlić tekst na podstawie obiektu DateTime nalezy użyć jego metody format("format_daty_i_czasu"):

$data->format("Y-m-d");

Walidacja dowolnej wartości

Obiekt pozwala również przeprowadzić walidację dla dowolnej wartości - nie tylko pobranej z CleanURL, Request, Get, Post, czy Cookie. Dokonuje tego metoda validate(), która jako pierwszy parametr przyjmuje wartość do przeprowadzenia walidacji - oczywiście będzie to jakaś zmienna.

$v = new Validator();
$name = $v->validate($some_variable, [
    'int' => true,
    'validator_message' => 'Niepoprawna liczba całkowita'
]);

 

Metody weryfikujące ostatni wynik

Obiekt walidatora pozwala po wykonaniu jednego kroku validacji (np metody validate lub validateFrom...) zweryfikować jego wynik (jest to często potrzebne w aplikacjach). Metody w zasadzie nie wymagają komentarza. Każda zwraca true lub false:

public function isLastOK()

public function isLastEmpty()

public function isLastSet()

przykład użycia po walidacji:

$v = new Validator();
$name = $v->validate($some_variable, [
    'int' => true,
    'validator_message' => 'Niepoprawna liczba całkowita'
]);
if  ($v->isLastOk()) {
    // ... zrób coś gdy parametr poprawnie zwalidowany
}