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