use Phalcon\Mvc\Router; use Phalcon\Mvc\Router\Annotations; use Phalcon\Mvc\Url as UrlResolver; use Phalcon\DI\FactoryDefault; use Phalcon\Session\Adapter\Files as SessionAdapter; /** * The FactoryDefault Dependency Injector automatically registers the right services to provide a full stack framework */ $di = new FactoryDefault(); /** * Registering a router */ $di['router'] = function () use(&$di) { $di['logger']->log('Init global router service '); $router = new Annotations(false); $router->setDefaultModule('admin'); // TODO Add specific route setting here // ARCH DO NOT REMOVE THIS LINE $router->addModuleResource('web', 'Wechat2\\Web\\Controllers\\Question', '/web/question'); $router->addModuleResource('web', 'Wechat2\\Web\\Controllers\\User', '/web/user'); $router->addModuleResource('wechat', 'Wechat2\\Wechat\\Controllers\\Server', '/wechat/server'); $router->addModuleResource('admin', 'Wechat2\\Admin\\Controllers\\Index', '/admin/index'); $router->addModuleResource('web', 'Wechat2\\Web\\Controllers\\Index', '/web/index'); $router->addModuleResource('wechat', 'Wechat2\\Wechat\\Controllers\\Index', '/wechat/index'); $router->addModuleResource('mobile', 'Wechat2\\Mobile\\Controllers\\Index', '/mobile/index'); return $router; }; /** * The URL component is used to generate all kinds of URLs in the application */ $di['url'] = function () use(&$di) {
/** * Init router. * * @param DI $di Dependency Injection. * @param Config $config Config object. * * @return Router */ protected function _initRouter($di, $config) { $cacheData = $di->get('cacheData'); $router = $cacheData->get(EnSystem::CACHE_KEY_ROUTER_DATA); if ($router == null) { $saveToCache = $router === null; // Load all controllers of all modules for routing system. $modules = $di->get('registry')->modules; // Use the annotations router. $router = new PhRouterAnnotations(false); $router->setDefaultModule(Application::SYSTEM_DEFAULT_MODULE); $router->setDefaultNamespace(ucfirst(Application::SYSTEM_DEFAULT_MODULE) . '\\Controller'); $router->setDefaultController('Index'); $router->setDefaultAction('index'); /** * Load all route from router file */ foreach ($modules as $module) { $moduleName = ucfirst($module); // Get all file names. $moduleDir = opendir($di->get('registry')->directories->modules . $moduleName . '/Controller'); while ($file = readdir($moduleDir)) { if ($file == "." || $file == ".." || strpos($file, 'Controller.php') === false) { continue; } $controller = $moduleName . '\\Controller\\' . str_replace('Controller.php', '', $file); $router->addModuleResource(strtolower($module), $controller); } closedir($moduleDir); } if ($saveToCache) { $cacheData->save(EnSystem::CACHE_KEY_ROUTER_DATA, $router, 2592000); // 30 days cache } } $router->removeExtraSlashes(true); $di->set('router', $router); return $router; }
/** * Init router. * * @param DI $di Dependency Injection. * @param Config $config Config object. * * @return Router */ protected function _initRouter($di, $config) { $defaultModuleName = ucfirst(Application::SYSTEM_DEFAULT_MODULE); // Check installation. if (!$config->installed) { $router = new RouterAnnotations(false); $router->setDefaultModule(Application::SYSTEM_DEFAULT_MODULE); $router->setDefaultNamespace($defaultModuleName . '\\Controller'); $router->setDefaultController("Install"); $router->setDefaultAction("index"); $router->addModuleResource(Application::SYSTEM_DEFAULT_MODULE, $defaultModuleName . '\\Controller\\Install'); $di->set('installationRequired', true); $di->set('router', $router); return; } $cacheData = $di->get('cacheData'); $router = $cacheData->get(System::CACHE_KEY_ROUTER_DATA); if ($config->application->debug || $router === null) { $saveToCache = $router === null; // Load all controllers of all modules for routing system. $modules = $di->get('registry')->modules; // Use the annotations router. $router = new RouterAnnotations(true); $router->setDefaultModule(Application::SYSTEM_DEFAULT_MODULE); $router->setDefaultNamespace(ucfirst(Application::SYSTEM_DEFAULT_MODULE) . '\\Controller'); $router->setDefaultController("Index"); $router->setDefaultAction("index"); // Read the annotations from controllers. foreach ($modules as $module) { $moduleName = ucfirst($module); // Get all file names. $files = scandir($di->get('registry')->directories->modules . $moduleName . '/Controller'); // Iterate files. foreach ($files as $file) { if ($file == "." || $file == ".." || strpos($file, 'Controller.php') === false) { continue; } $controller = $moduleName . '\\Controller\\' . str_replace('Controller.php', '', $file); $router->addModuleResource(strtolower($module), $controller); } } if ($saveToCache) { $cacheData->save(System::CACHE_KEY_ROUTER_DATA, $router, 2592000); // 30 days cache } } $di->set('router', $router); return $router; }