Ejemplo n.º 1
0
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;
 }