Ako na validáciu elementov pridaných cez hook_form_alter?

To, že akýkoľvek formulár v Drupale si vieme upraviť prostredníctvom hook_form_alter je pomerne známa a veľmi využívaná vec. Čo ale ak chceme tieto údaje aj nejakým spôsobom zvalidovať, tzn. ošetriť ich správnosť? Funkcia ako hook_validation_alter v Drupale neexistuje a hook_validate je určená len pre node formuláre, teda formuláre pre pridávanie obsahu. Možnosť, samozrejme, existuje, je prítomná aj v API dokumentácii, ale keďže trošku skrytá a i mne chvíľu trvalo kým som ju našiel, dám ju sem a možno niekomu uľahčím robotu. Keď do hook_form_alter pridáte tento riadok $form['#validate'][] = 'your_validation_function'; tak tým definujete funkciu, ktorá sa má použiť na dodatočnú validáciu odoslaného formulára. Funkcia your_validation_function poberie parametre $form a &$form_state. Ako vidíte, $form['#validate'] je pole, takže tých funkcií môže byť neúrekom. Dajte pozor aby ste v rámci dodatočných validačných funkcií reportovali všetkych chyby volaním form_set_error().

Publikované dňa
Zaradené v kategóriach: