Ik heb Zend_Router nooit echt gebruikt voor het herschrijven van de standaard ZF urls. Echter wil een klant dat ik me richt op mooie urls, dus doen we dat! Zend_Router is erg interessant en biedt vele mogelijkheden. Zo is het me al gelukt om dit te herschrijven:
Zoals jullie misschien al wel door hebben, gaat het om een overzicht van auto onderdelen die voor iedere categorie weergegeven dienen te worden. Gaat allemaal goed, werkt erg mooi. Echter wil ik voor dit overzicht Zend_Paginator gaan toepassen en verschillende filters (sortering, eventueel later nog meer). Hiervoor wil ik de volgende urls gebruiken:
Met andere woorden, ik wil het laatste deel, de sortering en paginanummer, dynamisch houden.
Daarvoor had ik het volgende bedacht (klein gokje, kon verder hier niets over vinden):
Dit wil niet werken omdat de assembler niet genoeg argumenten mee krijgt om daadwerkelijk een url te bouwen. Iemand een idee hoe ik dit zo op kan bouwen dat wanneer er in de view met $this->url() een url gemaakt wordt voor modelCategory, er een url wordt gemaakt die alleen wanneer nodig bijvoorbeeld het /page/2/ deel er achter plakt?
/model/1/Model-naam/ /model/1/1/Model-naam/categorie/
Zoals jullie misschien al wel door hebben, gaat het om een overzicht van auto onderdelen die voor iedere categorie weergegeven dienen te worden. Gaat allemaal goed, werkt erg mooi. Echter wil ik voor dit overzicht Zend_Paginator gaan toepassen en verschillende filters (sortering, eventueel later nog meer). Hiervoor wil ik de volgende urls gebruiken:
/model/1/1/Model-naam/categorie/sort/price/ /model/1/1/Model-naam/categorie/sort/price/desc/ /model/1/1/Model-naam/categorie/page/2/ /model/1/1/Model-naam/categorie/sort/price/page/2/ /model/1/1/Model-naam/categorie/sort/price/desc/page/2/ etc, jullie snappen 'm?
Met andere woorden, ik wil het laatste deel, de sortering en paginanummer, dynamisch houden.
Daarvoor had ik het volgende bedacht (klein gokje, kon verder hier niets over vinden):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| resources.router.routes.modelCategory.route = "model/(\d+)/(\d+)/([\w\-]*)/([\w\-]*)(/sort/([\w\-])(/([\w\-]))?)?(/page/(\d+))?" resources.router.routes.modelCategory.type = "Zend_Controller_Router_Route_Regex" resources.router.routes.modelCategory.defaults.module = "default" resources.router.routes.modelCategory.defaults.controller = "category" resources.router.routes.modelCategory.defaults.action = "view" resources.router.routes.modelCategory.map.1 = "modelId" resources.router.routes.modelCategory.map.2 = "categoryId" resources.router.routes.modelCategory.map.3 = "model" resources.router.routes.modelCategory.map.4 = "category" resources.router.routes.modelCategory.map.5 = "sort" resources.router.routes.modelCategory.map.6 = "sortMode" resources.router.routes.modelCategory.map.7 = "page" resources.router.routes.modelCategory.reverse = "model/%d/%d/%s/%s/sort/%s/%s/page/%d/" |
Dit wil niet werken omdat de assembler niet genoeg argumenten mee krijgt om daadwerkelijk een url te bouwen. Iemand een idee hoe ik dit zo op kan bouwen dat wanneer er in de view met $this->url() een url gemaakt wordt voor modelCategory, er een url wordt gemaakt die alleen wanneer nodig bijvoorbeeld het /page/2/ deel er achter plakt?