Routy s různými vstupními a výstupními parametry
- ViliamKopecky
- Nette hipster | 230
Částečně přeneseno z jiného vlákna.
Honza M. napsal(a):
enoice napsal(a):
Já chci pořešit
- Routy s různými vstupními a výstupnímmi parametry (jak jsem ti (Davide) o tom říkal na narozkách Honzy Tichýho)
Co to je?
Řekněme že máš routu kterou zapíšeš třeba jenom jako
<seouri>
čili 1 vstupní parametr, ale Routa by ti měla
umožnit nějaký callbacky třeba na model, kterej by ti vrátil výstupní
parametry – například id
a lang
, případně i
action
nebo Presenter
(a samozřejmě i opačně). Na
první pohled se může zdát, že tohle se s aktuálníma Routama udělat dá,
ale obávám se, že opravdu nedá :)
Ukázka teoretické funkcionality:
Editoval enoice (22. 10. 2009 8:30)
- Honza Marek
- Člen | 1664
Já teď mám vlastní router, který z adresy rozpozná jazyk, presenter (Homepage/Page) a id stránky. Předpokládám, že tato vlastnost by to uměla vyřešit, takže jsem rozhodně pro. Jenom se trochu ztrácím v názvosloví, co je out a in, tak nad tím bych ještě popřemýšlel.
- ViliamKopecky
- Nette hipster | 230
Názvosloví taky nemám ujasněné (teď při psaní jsem to nějakolikrát přejmenoval:)… Ale jak znám Davídka, tak on si vezme myšlenku a implementuje to trošku jinak – lépe.
- Jan Tvrdík
- Nette guru | 2595
Nad něčím takovým jsem taky uvažoval, ale ještě jsem se nedostal k tomu, abych si to napsal.
- David Grudl
- Nette Core | 8258
Pokud by ten vstupně/výstupní filtr byl specifický vždy jen pro jednu routu, je pak otázka, zda neudělat rovnou konkrétní routu. Tj. metody uriIn() a uriOut() je potřeba stejně někam dát, takže si mohu vytvořit rovnou třídu MySpecRoute extends Route a do ní obě metody dát už v podobě přepsání metod match() a constructUrl(). Ty zavolají rodiče a poté modifikují PresenterRequest.
- ViliamKopecky
- Nette hipster | 230
David Grudl napsal(a):
Pokud by ten vstupně/výstupní filtr byl specifický vždy jen pro jednu routu, je pak otázka, zda neudělat rovnou konkrétní routu. Tj. metody uriIn() a uriOut() je potřeba stejně někam dát, takže si mohu vytvořit rovnou třídu MySpecRoute extends Route a do ní obě metody dát už v podobě přepsání metod match() a constructUrl(). Ty zavolají rodiče a poté modifikují PresenterRequest.
Tak jsem to udělal… respektive jsem vše zkopíroval, a přidal asi čtyři (ono jich je o trochu víc, tak 30) řádky. Ono jde o to, že jsem nechtěl přijít o ty užitečné vlastnosti které se v match() a constructUrl() provádějí. Pošlu ti to radši mailem, tady se mi to nechce ukazovat.
Jinak – ano, pak jsem si jednotlivý routy dědil od téhle.
Editoval enoice (22. 10. 2009 16:44)