<?php use Phalcon\Mvc\Router; $router = new Router(); //$router = new Router(false); $router->removeExtraSlashes(true); // 移除URL多余的斜杠 //$router->setUriSource(Router::URI_SOURCE_GET_URL); $router->setDefaultController('index'); $router->setDefaultAction('index'); $router->setDefaultModule('frontend'); $router->setDefaultNamespace('Apps\\Frontend\\Controllers'); // APP API $router->add('/appApi', ['module' => 'appApi', 'namespace' => 'Apps\\AppApi\\Controllers\\', 'controller' => 'index', 'action' => 'index']); $router->add('/appApi' . '/:action', ['module' => 'appApi', 'namespace' => 'Apps\\AppApi\\Controllers\\', 'controller' => 'index', 'action' => 1]); $defaultController = 'index'; $defaultAction = 'index'; $urlBase = ['/backend' => ['module' => 'backend', 'namespace' => 'Apps\\Backend\\Controllers\\'], '/manage' => ['module' => 'manage', 'namespace' => 'Apps\\Manage\\Controllers\\'], '/frontend' => ['module' => 'frontend', 'namespace' => 'Apps\\Frontend\\Controllers\\'], '/pay' => ['module' => 'pay', 'namespace' => 'Apps\\Pay\\Controllers\\']]; foreach ($urlBase as $k => $v) { $module = $v['module']; $namespace = $v['namespace']; $router->add($k . '/:params', ['module' => $module, 'namespace' => $namespace, 'controller' => $defaultController, 'action' => $defaultAction, 'params' => 1]); $router->add($k . '/:controller/:params', ['module' => $module, 'namespace' => $namespace, 'controller' => 1, 'action' => $defaultAction, 'params' => 2]); $router->add($k . '/:controller/:action/:params', ['module' => $module, 'namespace' => $namespace, 'controller' => 1, 'action' => 2, 'params' => 3]); } return $router;
public function diRouter() { $di = $this->getDI(); $cachePrefix = $this->getAppName(); $cacheFile = $this->getConfigPath() . "/_cache.{$cachePrefix}.router.php"; if ($router = $this->readCache($cacheFile, true)) { return $router; } $moduleManager = $di->getModuleManager(); $config = new Config(); $moduleName = ''; if ($moduleManager && ($modulesArray = $moduleManager->getModules())) { foreach ($modulesArray as $moduleName => $module) { //NOTICE: EvaEngine Load front-end router at last $config->merge(new Config($moduleManager->getModuleRoutesFrontend($moduleName))); $config->merge(new Config($moduleManager->getModuleRoutesBackend($moduleName))); } } //Disable default router $router = new Router(false); //Last extra slash $router->removeExtraSlashes(true); //Set last module as default module $router->setDefaultModule($moduleName); //NOTICE: Set a strange controller here to make router not match default index/index $router->setDefaultController('EvaEngineDefaultController'); $config = $config->toArray(); foreach ($config as $url => $route) { if (count($route) !== count($route, COUNT_RECURSIVE)) { if (isset($route['pattern']) && isset($route['paths'])) { $method = isset($route['httpMethods']) ? $route['httpMethods'] : null; $router->add($route['pattern'], $route['paths'], $method); } else { throw new Exception\RuntimeException(sprintf('No route pattern and paths found by route %s', $url)); } } else { $router->add($url, $route); } } if (!$di->getConfig()->debug) { $this->writeCache($cacheFile, $router, true); } else { //Dump merged routers for debug $this->writeCache($this->getConfigPath() . "/_debug.{$cachePrefix}.router.php", $router, true); } return $router; }
<?php use Phalcon\Mvc\Router; /* ================================================== * ลงทะเบียน "เส้นทางเว็บแอพพลิเคชั่น" (Router) * Registering a router * ================================================== */ $config = $this->config; // Read the configuration $manager->set('router', function () use($config) { $router = new Router(); $router->setDefaultModule($config->router->moduleDefault); $router->setDefaultController($config->router->controllerDefault); $router->setDefaultAction($config->router->actionDefault); $router->removeExtraSlashes(TRUE); $addModule = explode(',', $config->module->moduleLists); foreach ($addModule as $module) { $pathModule = APPLICATION_PATH . '/modules/' . $module . '/Router.php'; $nameModule = ucfirst($module) . 'Router'; if (file_exists($pathModule)) { include_once $pathModule; $router->mount(new $nameModule($config)); } } return $router; });
public function setDefaultController($controllerName) { return parent::setDefaultController($controllerName); }