Router class pro moduly – definovani pro service
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- macesko
 - Člen | 12
 
Chtel bych vyuzivat moduly a vsechny vyhody s tim spojene, spolu s nastavenim v config.neon. Muzete poradit nekdo jak na to?
zatim je v config.neon toto:
	services:
		routerFactory: RouterFactory
		router: @routerFactory::createRouter
RouterFacory.php
class RouterFactory
{
	/**
	 * @return Nette\Application\IRouter
	 */
	public function createRouter()
	{
		$router = new RouteList();
		$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
                $router[] = $generatorRouter = new RouteList('Admin');
                $generatorRouter[] = new Route('admin/<presenter>/<action>', 'Homepage:default');
		$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
		return $router;
	}
}
Jak to tedy obecne udelat tak, abych mel pro kazdy modul vlastni routerFactory a vse dal dohromady pouze v config.neon?

- enumag
 - Člen | 2118
 
Myslím že by to mohlo jít nějak takto:
services:
    front.routerFactory: FrontModule\RouterFactory
    admin.routerFactory: AdminModule\RouterFactory
    router:
        class: Nette\Application\Routers\RouteList
        setup:
            - offsetSet(0, @front.routerFactory::createRouter)
            - offsetSet(1, @admin.routerFactory::createRouter)
				
- enumag
 - Člen | 2118
 
No… takhle složitěji to půjde skoro určitě, nevím zda existuje jednodušší zápis.
services:
    front.routerFactory: FrontModule\RouterFactory
    admin.routerFactory: AdminModule\RouterFactory
    front.router: @front.routerFactory::createRouter
    admin.router: @admin.routerFactory::createRouter
    router:
        class: Nette\Application\Routers\RouteList
        setup:
            - offsetSet(0, @front.router)
            - offsetSet(1, @admin.router)
EDIT: Možná bude ještě potřeba zakázat autowiring.
services:
    front.router:
        create: @front.routerFactory::createRouter
        autowired: false
    admin.router:
        create: @admin.routerFactory::createRouter
        autowired: false
					Editoval enumag (6. 3. 2013 0:34)