Zprávy z modelu do formuláře
- llook
- Člen | 407
Problém: Z formuláře vyberu data (Form::getValues()) a předám je modelu, například aby si je uložil (DibiTable::insert()). Model zjistí, že přese všechna validační pravidla ta data stále nejsou v pořádku. Jak tuto informaci předat zpět do formuláře?
Momentálně to dělám takhle:
Jenže tím se přidá taková obecná chyba. Chyba, která nepatří žádné konkrétní položce. Někdy to stačí (když nastane nějaká DibiException), pokud ale v modelu provádím nějakou vlastní složitější validaci, tak mi ta možnost označit určitou položku docela schází.
Napadlo mě, že by se mohla ustanovit nějaká speciální výjimka, která by tyto informace nesla:
A pak by se to odchytávalo nějak takhle (formulář by si ty chyby uměl z té výjimky vycucnout):
Zatím je to jenom nápad, ale myslím, že něco takového by vůbec nemuselo být špatné. Co myslíte?
- David Grudl
- Nette Core | 8249
Ve „starých“ formulářích bylo možné jako druhý parametr metody addError() uvést název položky, ke které byla zpráva přiřazena. U nových formulářů mají metodu addError() už i jednotlivé položky:
ad výjimky: něco podobného funguje v nových formulářích. Existuje tu podpora uživatelských validátorů (jako callbacky). Ty v případě negativního výsledku vrátí FALSE.
V PHP 5.3 půjde uživatelské validátory zapisovat i takto: