3

我添加了以下路线Phalcon\MVC\Router

$router = new Phalcon\Mvc\Router();

$router->removeExtraSlashes(true)
    ->setDefaultNamespace('My\Controllers')
    ->setDefaultModule('default')
    ->setDefaultController('index')
    ->setDefaultAction('index');

$router->add('/admin/:controller/:action/:params', [
    'module' => 'admin',
    'controller' => 1,
    'action' => 2,
    'params' => 3,
    'namespace' => 'My\Admin\Controllers'
])->setName('admin_module');

我正在处理以下 URL:

  1. /admin/foo/bar/baz- 效果很好。我得到admin模块、foo控制器、bar动作、"baz"参数。

  2. /admin/foo/bar- 效果很好。我得到admin模块、foo控制器、bar动作。

  3. /admin/foo-不匹配。我希望得到admin模块、foo控制器、index动作。

  4. /admin-不匹配。我希望得到admin模块、index控制器、index动作。

问题:

如何使路由段可选并默认为提供的控制器和操作名称的默认值。我想避免为/admin和定义额外的路线/admin/:controller

谢谢你。

4

1 回答 1

2

最常见的方法是使用相同的选项(在 中的第二个参数)将每个模式添加Router为自定义。至于注释路由,最好为方法选择一些指令。这种方式主要用于使用方便(路由名称)生成将比通用的更快。RoutepathsRoute::add()@RouteActionURLRoute

问候

于 2013-08-13T09:45:34.320 回答