我在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');
我正在处理以下网址:
/admin/foo/bar/baz
- 效果很好。我得到admin
模块,foo
控制器,bar
操作,"baz"
参数。
/admin/foo/bar
- 效果很好。我得到admin
模块,foo
控制器,bar
操作。
/admin/foo
- 不匹配。我希望获得admin
模块,foo
控制器,index
操作。
/admin
- 不匹配。我希望获得admin
模块,index
控制器,index
操作。
问题:
如何使路径段可选,默认为控制器和操作名称的默认值。我想避免为/admin
和/admin/:controller
定义额外路由。
谢谢。
答案 0 :(得分:2)
最常见的方法是将每个模式添加到Router
作为自定义Route
,并使用相同的paths
选项(Route::add()
中的第二个参数)。
至于注释路由,它可以为@Route
方法选择少量Action
指令。
这种方式主要用于使用因为URL
生成方便Route
(路由名称)将比通用方法更快。
问候