Public metoda pro zjištění cíle z Nettího tvaru
- jtousek
- Člen | 951
Ahoj,
už jsem při práci vícekrát narazil na nemožnost jedné věci. Když si
napíšu nějakou vlastní metodu (je jedno kde a co dělá) a chci aby
nějakým způsobem pracovala s nějakou action, docela by se hodila možnost
dávat jí parametr v Nettím tvaru „Module:Presenter:Action“, problém je,
že chybí metoda, která by tento tvar překládala do nějakého
array('module' => 'Front', 'presenter' => 'Article', 'action' => 'Edit')
(takhle jednoduše by to asi kvůli komponentám nešlo, ale smysl z toho snad
je vidět).
Chtěl bych to využít na práci s anotacemi – vytvořit si makro, které by jako parametr dostalo cíl ve stejném tvatu jako {link …}, toto makro by si díky této mětodě, o kterou žádám zjistilo, kam odkaz vede a z anotací cílového presenteru a akce by si vyčetlo další informace a podle nich se zachovalo. Typické využití by bylo v anotaci uvádět práva, která pro danou action uživatel potřebuje (pokud je nemá, odkaz vůbec nevypsat), ale to není zdaleka jediná věc, kterou bych chtěl takto řešit. Ty ostatní věci jsou jen jako příklad nevhodné, neboť jsou výrazně „application specific“.
Funkcionalita pro parsování cíle je nyní schována v metodě
Presenter::createRequest()
a tedy ji nikdo zvenku nemůže
použít. Neexistuje tedy způsob jak z Nettího tvaru cíle získat tvar tak,
aby se s ním dalo nějak rozumně pracovat. Jednoduché hledání dvojtečky
napadne asi každého, ale připadá mi to poněkud nedostatečné při pohledu
na složitou logiku v Presenter::createRequest()
. Navíc je to
takové, že se jedna věc dělá na X místech Y způsoby a to je chyba už na
první pohled.
Navíc by si někdo mohl chtít časem tuto parsovací metodu nějak modifikovat pro vlastní účely a mohl by si jí ve svém presenteru napsat sám jak chce.
Editoval jtousek (8. 10. 2010 0:24)