我将以下路由添加到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
Controller ,bar
操作,"baz"
参数。 /admin/foo/bar
-效果很好。我得到admin
模块,foo
Controller ,bar
操作。 /admin/foo
-不匹配。我希望获得admin
模块,foo
Controller ,index
操作。 /admin
-不匹配。我希望获得admin
模块,index
Controller ,index
操作。 问题:
如何将路由段设为可选,并默认设置为提供的 Controller 和操作名称的默认值。我想避免为
/admin
和/admin/:controller
定义额外的路由。谢谢。
最佳答案
最有效的方法是使用相同的Router
选项(Route
中的第二个参数)将每个模式作为自定义paths
添加到Route::add()
中。
至于注释路由,最好为@Route
方法选择一些Action
指令。
这种方法主要用于用法,因为通过URL
(路由名称)方便地生成Route
将比通用方法更快。
问候
关于routing - Phalcon路由-使路由段可选,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17929493/