我在使用我的应用程序的路由时遇到了一些非常奇怪的事情,这是一个API。我不使用micro,只使用常规的Phalcon堆栈。
这是我的路由器定义:
$di->set('router', function () {
$router = new Router(false);
$router->setDefaultAction('index');
$router->setDefaultController('index');
$router->add('/:module/:controller/:params', array(
'module' => 1,
'controller' => 2,
'params' => 3
));
$router->removeExtraSlashes(true);
return $router;
});
路由器使用这些示例路径:
但由于某种原因,以下内容与任何路线都不匹配!
奇怪的是,我正在玩路线定义,当我改变第一个添加到' /:module' (而不是' /:module /:controller /:params'),路由器按预期工作!
我在我的智慧结束,并希望有人可以帮助我。我不知道我做错了什么。不确定为什么一个路由定义会起作用,而另一个路径定义会失败。我错过了什么吗?
注意:
答案 0 :(得分:1)
以及模块的现有路径,您还可以添加仅通过模块名称访问的路径:as
...
$router->add('/:module/:controller',
array(
'module' => 1,
'controller' => 2,
'action' => 'index',
)
);
$router->add('/:module',
array(
'module' => 1,
'controller' => 'index',
'action' => 'index',
)
);
...
答案 1 :(得分:0)
如果你想版本模块并有一些订单,这是一种方式。
$router = new Router(false);
$versionedModules = ['a', 'b', 'c'];
foreach ($versionedModules as $module) {
$namespace = 'App\\'. ucfirst($module) . '\Controllers';
$moduleRouter = new \Phalcon\Mvc\Router\Group([
'namespace' => $namespace,
'module' => $module
]);
$moduleRouter->add("/{$module}/:controller/:params/", [
'controller' => 1,
'params' => 2
]);
}
$router->mount($moduleRouter);