Akce před handlerem formuláře
- HFechs
- Člen | 5
Zdravím,
trošku mám ve formulářích guláš a rád si to úplně ujasním.
Mějme situaci: mám presenter a v něm komponentu formular co vytvoří formulář a akci edit. Takže formulář slouží k editaci něčeho.
V životním cyklu presenteru se nejdříve spustí akce edit, udělá nějakou authorizaci, jestli má uživatel vůbec právo editovat, podle getParam[‚id‘] z databáze vytáhne editovaný objekt a pomocí $this[‚formular‘]->setDefaults(…) nastaví výchozí hodnoty ve formuláři.
Samotný formulář má nastavený callback onSuccess[] na nějaký handler, pojmenovaný třeba upravFormular.
Formulář odešlu: Pokud je formulář nevalidní, upravFormular se nezavolá a znova se vykoná vše co je v akci edit (tedy authorizace, setDefaults se neprovede, protože je inteligetní a nastavuje jen prázdný formulář). Pokud je vše OK, spustí se akce edit (opět se provede authorizace – v případě nedostatečných práv vyhodím throw new ForbiddenRequestException;) a pak se zavolá upravFormular, co může formulář třeba uložit do databáze.
A tady je moje otázka: je nutné dělat authorizaci i v upravFormular? Je možné ho spustit nějak jinak? Bez provedení akce? Nejsem si zde vůbec jistý a rád bych v tom měl jasno. Jinak vše funguje.
Také mě mate, že někde na foru jsem viděl, že někteří pojmenovávají handler pro zpracování formuláře:
public function handleUpravFormular($form)
{
}
U takto pojmenováného handleru je mi jasné, že se k němu půjde dostat i přes url, protože se z něj stane signál. Ale já takhle handlery pro onSuccess nepojmenovavám. Jak to tedy je? :-)
Děkuji za odpovědi.
- HFechs
- Člen | 5
To je fakt :-). Díky moc. Tušil jsem, že validovat musím v obou, ale chtěl jsem mít jistotu.
Pustil jsem si https://www.youtube.com/watch?… a trošku v těch komponentách začínám mít jasno.