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 | 844
+
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 | 516
+
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 | 458
+
0
-

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