Signál přes extensionMethod() + koncept formulářů
- Dragon Jake
- Člen | 20
Zdravím,
vyvíjím poměrně složitou administrační aplikaci a chtěl bych se
zeptat na názor odborníků. Každý formulář v aplikaci má vlastní
třídu děděnou z abstraktního BaseForm
, která obsahuje metody
pro vytvoření prvků a validačních pravidel. Dnes jsem si umanul, že by
bylo fajn, aby formulář jakožto znovupoužitelná komponenta (koncept tohoto
tu už někde zazněl) obsahoval i pro něj specifické akce/metody,
v případě presenterů tedy signály.
Vezmu konkrétní příklad: formulář siteLoginForm
obsahuje
metodu handleLogout
, přetížením attached
volám
abstraktní setupExtensions
, který přes addMethod
přidá presenteru extension methodu uvedenou v parametru. To by ale bylo
příliš jednoduché. Mé úsilí totiž padá na Reflection, která extension
metody u většiny getovátek nezjistí. Musel bych tedy upravit kód
Presenteru, aby bral v podmínkách i možnost existence těchto metod (přes
getExtensionMethod($name)
) a nebo přímo celý
Nette\Reflection\ClassReflection
a to už se mi opravdu
přestává líbit.
Prosím o zhodnocení konceptu, nebo pokud mě někdo nakopnete lepším směrem, budu jedině rád :)
edit: tak mě napadá, že bude lepší zabalit formulář do komponenty, čímž všechny problémy odpadnou – proč mě to nenapadlo před odesláním tohoto dotazu?
Editoval Dragon Jake (4. 6. 2010 15:33)
- Filip Procházka
- Moderator | 4668
zkus se podívat na tohle, nevím jestli tě chápu úplně přesně,
https://forum.nette.org/…a-komponenta
ale pokud bys měl formulář vždy v takovéto komponentě, mohl bys jí dát signály a do templaty odkazy na handlery apod :)
- Dragon Jake
- Člen | 20
HosipLan napsal(a):
zkus se podívat na tohle, nevím jestli tě chápu úplně přesně,
https://forum.nette.org/…a-komponenta
ale pokud bys měl formulář vždy v takovéto komponentě, mohl bys jí dát signály a do templaty odkazy na handlery apod :)
Přesně tím jsem se inspiroval poté, co mě osvítila myšlenka komponenty, vlastně jsem si editem sám odpověděl. Díky za reakci :)