<?php use Phalcon\Mvc\Router\Group; use Phalcon\Mvc\Router; $router = new Router(false); $router->setDefaults(['controller' => 'tests', 'action' => 'index']); $router->removeExtraSlashes(true); $prefix = '/' . VERSION . '/'; //tests $tests = new Group(['controller' => 'tests']); $tests->setPrefix($prefix . 'tests'); $tests->addGet('', ['action' => 'index']); $tests->addGet('/{id:[0-9]+}', ['action' => 'view']); $tests->addPost('/new', ['action' => 'new']); $tests->addPut('/{id:[0-9]+}', ['action' => 'update']); //task $tasks = new Group(['controller' => 'task']); $tasks->setPrefix($prefix . 'tasks'); $tasks->addGet('', ['action' => 'index']); $tasks->addGet('/{id:[0-9]+}', ['action' => 'view']); $tasks->addPost('/new', ['action' => 'new']); $tasks->addPut('/{id:[0-9]+}', ['action' => 'update']); //token $token = new Group(['controller' => 'token']); $token->setPrefix($prefix . 'token'); $token->add('', ['action' => 'index']); //mount $router->mount($token); $router->mount($tests); $router->mount($tasks); return $router;
$frontend->add('/:controller/:int', ['controller' => 1, 'id' => 2]); $frontend->add('/:controller/:int/{slug:[a-z\\-]+}', ['controller' => 1, 'id' => 2, 'slug' => 3, 'action' => 'view']); $frontend->add('/posts/:int/{slug:[a-z\\-]+}', ['id' => 1, 'slug' => 2, 'action' => 'view']); $frontend->add('/:controller[/]?', ['controller' => 1]); $frontend->add('/blog/{id:[0-9]+}/{slug:[a-z\\-]+}', ['controller' => 'posts', 'action' => 'view']); $frontend->add('/questions/{id:[0-9]+}/{slug:[a-z\\-]+}', ['controller' => 'posts', 'action' => 'view']); $frontend->add('/questions/new', ['controller' => 'posts', 'action' => 'new']); $frontend->add('/'); $router->mount($frontend); /** * Define routes for each module */ $modules = ['oauth', 'backend']; foreach ($modules as $module) { $group = new Group(['module' => $module]); $group->setPrefix('/' . $module); $group->add('/:controller/:action/:params', array('controller' => 1, 'action' => 2, 'params' => 3)); $group->add('/:controller/:int', ['controller' => 1, 'id' => 2]); $group->add('/:controller[/]?', ['controller' => 1]); $frontend->add('/:controller/:int/{slug:[a-z\\-]+}', ['controller' => 1, 'id' => 2, 'slug' => 3, 'action' => 'view']); $group->add('[/]?', array()); $router->mount($group); } $router->add('/backend', ['module' => 'backend', 'controller' => 'dashboard']); $router->add('/oauth/github/access_token', ['module' => 'oauth', 'controller' => 'login', 'action' => 'tokenGithub']); $router->add('/oauth/google/access_token', ['module' => 'oauth', 'controller' => 'login', 'action' => 'tokenGoogle']); $router->add('/oauth/facebook/access_token', ['module' => 'oauth', 'controller' => 'login', 'action' => 'tokenFacebook']); $router->add('/questions', ['module' => 'frontend', 'controller' => 'posts']); /** * @link https://docs.phalconphp.com/en/latest/reference/routing.html#match-callbacks */
//遍历注册模块 $di->set('registerModules', function () use($di) { $modules = $di->get('modules'); $regModules = []; foreach ($modules as $key => $val) { $regModules[$val] = ['className' => "Modules\\{$val}\\Module", 'path' => "../app/controllers/{$val}/Module.php"]; } return $regModules; }); // 加载每个模块里的路由文件 $di->set('router', function () use($di, $config) { $modules = $di->get('modules'); $router = new Router(); $adminRouterGroup = new RouterGroup(); // 管理类分组 $adminRouterGroup->setPrefix($config->application->adminPrefix); $frontendRouterGroup = new RouterGroup(); //前端显示类分组 $frontendRouterGroup->setPrefix($config->application->frontendPrefix); // $apiRouterGroup = new RouterGroup(); //api,service类分组 // $apiRouterGroup->setPrefix($config->application->apiPrefix); $controllerPath = $config->application->controllersDir; // 一个路由分组的默认地址 这个路由分组里放的是显示网站数据的应用,称之为前台 $frontendRouterGroup->add('/', ['namespace' => 'Modules\\Frontend\\Controllers', 'module' => 'Frontend', 'controller' => 'index', 'action' => 'index']); // 一个路由分组的默认地址 这个路由分组里放的是管理网站数据的应用,称之为后台 $adminRouterGroup->add('/', ['namespace' => 'Modules\\Backend\\Controllers', 'module' => 'Backend', 'controller' => 'index', 'action' => 'index']); foreach ($modules as $key => $val) { if (file_exists($controllerPath . $val . "/Router.php")) { require_once $controllerPath . $val . "/Router.php"; } }