Více routerů v modulové aplikaci (modul=extension)

CzeM
Člen | 9
+
0
-

Ahoj,

dokázal by někdo poradit a navést na správné řešení pro více routerů v aplikaci?

Mám core vlastního řešení jako extension, ve kterém bych měl základní routy. V dalších rozšířeních bych pak chtěl router rozšiřovat.

Děkuji.

Kamil Valenta
Člen | 758
+
0
-

Já mám v DI jen ten „core router“ a ty podružné si on vytváří „ručně“.

/**
 * @return \Nette\Application\IRouter
 */
public function createRouter()
{
    $router = new RouteList();

    foreach ($this->routy->vratPovoleneModuly() as $moduleDir) {
        $moduleName = \Nette\Utils\Strings::firstUpper($moduleDir);
        $moduleClassName = '\\App\\'.$moduleName.'\\RouterFactory';

        if (class_exists($moduleClassName)) {
            $objRouter = new $moduleClassName($this->routy, $this->database, $this->cache_storage);
            if (method_exists($objRouter, 'createRouter')) {
                $router[] = $objRouter->createRouter();
            }
        }
    }

    return $router;
}

Držím jistou uniformitu routerů, takže mi nevadí takto ručně předané závislosti.

MajklNajt
Člen | 471
+
0
-

ja mám vytvorený interface, ktorý v každom balíčku implementujem a registrujem ako službu, a do hlavného routeru (v aplikácií) si ich potom vypýtam z DIC ako pole služieb

Petr Parolek
Člen | 455
+
0
-

další řešení je použití https://github.com/…er/tree/v2.1#… , které sám hojně využívám.