
Validování dat přes Doctrine
18. Února 2010
V dnešním díle seriálu o Doctrine ORM si ukážeme další skvělou vlastnost tohoto frameworku a tou je Validace. Validace dat může probíhat na několika úrovních od nejnižší vrstvy (databáze) až po tu nejvyšší vrstvu (javascript). Jistě mi dáte za pravdu, že ani jeden z těchto extrémů není nejlepší, ale samozřejmě taky mají svoje využití. Pokud používámě nějakou knihovnu na tvorbu formulářů většinou v ní můžeme validátory nastavit, ale my si dnes ukážeme, že nám k tomu stačí pouze Doctrine.
Validátory jsou nedílnou součástí programování webových aplikací. Doctrine k nim přistupuje opět velice elegantně, ostatně jako ke všemu. Nejdříve si popíšeme základní validátory a poté, jak je implementovat. Vypíšeme si opět jen ty nejdůležitější a nejzajímavější.
notnull - kontroluje zda hodnota není typu null.
notblank - kontroluje zda zadaná hodnota není prázdná.
minlength - zadaná hodnota musí být větší než hodnota nastavená pro tento sloupec.
email - hodnota musí mít správný tvar emailové adresy.
regexp - hodnota musí odpovídat danému regulárnímu výrazu.
past - kontroluje, jestli se jedná o datum, které již bylo.
future - stejně jako past, ale kontroluje zda se jedná o datum, co teprve bude.
date - kontroluje jestli je hodnota ve formátu data, jaké jste nastavili.
unique - hodnota musí být unikátní v daném sloupci.
Toto jsou jen základní a "nejpoužitelnější" validátory. Celý seznam můžete nalézt v dokumentaci Doctrine.
YAML
Validátory se implementují velice jednoduše. Stačí při vytváření YAML schématu dát danému sloupci nějakou validační vlastnost.
Dotaznik:
columns:
pohlavi:
type: string(20)
regexp: "/(muž|žena)/"
vek:
type: integer(5)
notblank: true
range: [1,120]
email:
type: integer(5)
notblank: true
email: true
datum:
type: string(20)
date: "Y M d" #hodnoty pouzity v php funkci date
Kód
Ve vašem PHP kódu už jen stačí nastavit validování. Otevřte soubor kde máte doctrine manager a přidejte následující řádky.
$manager = Doctrine_Manager::getInstance(); $manager->setAttribute(Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL);
Samotná validace funguje velice jednoduše. Stači vytvořit objekt, který validujete a naplnění hodnot zavolat metodu, která zjistí validitu. V případě zájmu můžete nechat vypsat chybové hlášky.
$dotaznik = New Dotaznik(); $dotaznik->fromArray($someArray); if(!$dotaznik->isValid()) { // dostaneme errory ulozene v poli [sloupec] => pole erroru $userErrors = $dotaznik->getErrorStack();
Pokud chceme například vlastní chybové hlášky můžeme si je nadefinovat.
foreach ($userErrors as $key => $val) { $errorKeys[] = $key ; if($key == "pohlavi") $errorMsg[] = "Pohlaví musí být muž nebo žena"; if($key == "vek") $errorMsg[] = "Věk musí být číslo od 1 do 120"; if($key == "datum") $errorMsg[] = "Nesprávný formát data"; if($key == "email") $errorMsg[] = "Nesprávný formát emailové adresy"; }
Používání Doctrine Validátorů je velice snadné a jeho výhodou je konzistence s celým frameworkem. Pokud pracujete s Doctrine ORM a potřebujete validovat data, tak je zbytečné "šahat" po jiném nástroji. Pokud vás validátory zajímají více do hloubky doporučuji si přečíst oficiální API této sekce přímo na stránkách frameworku.
Ohodnoť článek
Ohodnoťte článek.
|
- Zobrazeno 1312x
- 0 komentářů
- Přidat na del.icio.us
- Sdílet na Facebooku







Přidat příspěvěk