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
}