Skip to content

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 session
  • Rakit\Validation\Validator - validační knihovna
  • Siler\Http\Response - HTTP odpovědi
  • Petrovo\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

  1. Vytvoření instance validátoru s definovanými chybovými hláškami
  2. Nastavení validačních pravidel pro jednotlivá pole
  3. Spuštění validace na datech z $_POST
  4. 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ří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

JSON objekt ve formátu:

{
    "success": false,
    "message": "",
    "messages": ["<span>Chybová hláška</span>"],
    "csrf": "novy_csrf_token"
}