Dokumentace validace formuláře
Shrnutí
Kód implementuje validaci dat z HTTP POST požadavku formuláře s využitím knihovny Využívá knihovnu rakit/validation pro flexibilní a robustní validaci. . Kontroluje povinná pole včetně CSRF ochrany a vrací JSON odpověď s případnými chybovými zprávami.
use Petrovo\Session\Session;
use Rakit\Validation\Validator;
use Siler\Http\Response;
use function Petrovo\I18n\translate;
$lang = $lang ?? DEFAULT_LANG;
$validator = new Validator([
'frontend_csrf' => translate('Chyba CSRF ochrany formuláře', $lang),
'surname' => translate('Nevyplněné příjmení', $lang),
'email' => translate('Nevyplněný nebo neplatný e-mail', $lang),
'phone' => translate('Nevyplněný telefon', $lang),
'gdpr' => translate('Nevyplněn souhlas se zpracováním osobních údajů', $lang),
]);
$validation = $validator->make($_POST, [
'frontend_csrf' => 'required',
'surname' => 'required',
'email' => 'required|email',
'phone' => 'required',
'gdpr' => 'required',
]);
$validation->validate();
if ($validation->fails()) {
$errors = $validation->errors();
$errorMessages = $errors->all('<span>:message</span>');
Response\json([
'success' => false,
'message' => '',
'messages' => $errorMessages,
'csrf' => Session::get('frontend_csrf'),
]);
exit;
}
Použité závislosti
Petrovo\Session\Session- práce se sessionRakit\Validation\Validator- validační knihovnaSiler\Http\Response- HTTP odpovědiPetrovo\I18n\translate- překlad textů
Validační pravidla
Validované položky
- frontend_csrf - CSRF token (povinný)
- surname - příjmení (povinné)
- email - emailová adresa (povinná, validní formát)
- phone - telefon (povinný)
- gdpr - souhlas s GDPR (povinný)
Chybové hlášky
Chybové zprávy jsou lokalizované pomocí funkce translate() podle zvoleného jazyka.
Proces validace
- Vytvoření instance validátoru s definovanými chybovými hláškami
- Nastavení validačních pravidel pro jednotlivá pole
- Spuštění validace na datech z
$_POST - Kontrola výsledku:
- Při selhání validace vrací JSON s:
success: false- Seznam chybových hlášek
- Nový CSRF token
- Při úspěchu pokračuje dále v kódu
- Při selhání validace vrací JSON s:
Příklad použití
// Data z formuláře
$_POST = [
'frontend_csrf' => 'xyz123',
'surname' => 'Novák',
'email' => 'novak@example.com',
'phone' => '777123456',
'gdpr' => '1'
];
// Validace proběhne automaticky po odeslání formuláře
// V případě chyby vrátí JSON s chybovými hláškami
Návratová hodnota při chybné validaci
JSON objekt ve formátu:
{
"success": false,
"message": "",
"messages": ["<span>Chybová hláška</span>"],
"csrf": "novy_csrf_token"
}