use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Router\Annotations; use Phalcon\Mvc\View; $di = new \Phalcon\DI\FactoryDefault(); $di->set('view', function () { $view = new View(); $view->setViewsDir('../app/views/'); return $view; }); $di->set('annotations', function () { return new \Phalcon\Annotations\Adapter\Memory(); }); $di->set('router', function () { $router = new \Phalcon\Mvc\Router\Annotations(false); $router->removeExtraSlashes(true); $router->setUriSource(\Phalcon\Mvc\Router::URI_SOURCE_SERVER_REQUEST_URI); $router->addResource('Index', "/"); $router->addResource('User', "/user"); $router->addResource('OAuth', "/auth"); $router->notFound(["controller" => "index", "action" => "page404"]); return $router; }); $di->set('mongo', function () { $mongo = new MongoClient('mongodb://mongodb:27017'); return $mongo->selectDB("socwiz"); }, true); $di->set('collectionManager', function () { return new Phalcon\Mvc\Collection\Manager(); }, true); $di->set('url', function () { $url = new \Phalcon\Mvc\Url();
/** * Init router. * * @param DIBehaviour|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); // Use $_SERVER['REQUEST_URI'] (NGINX) if (!isset($_GET['_url'])) { $router->setUriSource(Router::URI_SOURCE_SERVER_REQUEST_URI); // Remove extra slashes from url $router->removeExtraSlashes(true); } $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); // Use $_SERVER['REQUEST_URI'] (NGINX) if (!isset($_GET['_url'])) { $router->setUriSource(Router::URI_SOURCE_SERVER_REQUEST_URI); // Remove extra slashes from url $router->removeExtraSlashes(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; }