Rozšíření stávajícího routelistu v případě nahrání nového modulu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- Tirus91
 - Člen | 199
 
Nyní mám následující routerfactory
namespace App;
use Nette,
    Nette\Application\Routers\RouteList,
    Nette\Application\Routers\Route,
    Nette\Application\Routers\SimpleRouter;
/**
 * Router factory.
 */
class RouterFactory {
    /**
     * @return \Nette\Application\IRouter
     */
    public function createRouter() {
        $router = new RouteList();
        $router[] = $adminModule = new RouteList('Admin');
        $adminModule[] = new Route('Admin/<presenter>/<action>/<id>[-<uri>]', array(
            'presenter' => 'Homepage',
            'action' => 'default',
            'id' => NULL,
        ));
        $router[] = $frontModule = new RouteList('Front');
        $frontModule[] = new Route('<presenter>/<action>/<id>[/<title>]', array(
            'presenter' => 'Homepage',
            'action' => 'default',
            'id' => NULL,
        ));
        $frontModule[] = new Route('index.php', 'Front:Default:default', Route::ONE_WAY);
        return $router;
    }
}
v config.neon mám toto
services:
    userManager: App\Model\UserManager
    - App\RouterFactory
    router: @App\RouterFactory::createRouter
O co mi jde?
Jakmile do složky app nakopíruji nějaký modul, tak ten by měl mít svůj
router a svůj konfig.
Router by se měl doplnit ke stávající routě (spíše před stávající se
dá ten z modulů).
Jak toto mohu docílit?

- Tirus91
 - Člen | 199
 
Nakonec jsem to udělal nějak takto, ale řešení je to prasácké.
Do routeru jsem si dal
$list = glob(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '*Module');
        foreach ($list as $modul) {
            if (class_exists('\\Tirus\\' . basename($modul) . '\\Router')) {
                eval('$router = \\Tirus\\' . basename($modul) . '\\Router::createRoutes($router);');
            }
        }
				
- Jiří Nápravník
 - Člen | 710
 
Mrkni na Flame\Modules . Modul uděláš jako extension, pak to stačí jen nakopírovat a přidat do extensions v neonu, routy apod. se pak automaticky zaregistruji