Phalcon路由 - 使路线段可选

时间:2013-07-29 16:40:53

标签: routing phalcon

我在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');

我正在处理以下网址:

  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操作。

  5. 问题:

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

    谢谢。

1 个答案:

答案 0 :(得分:2)

最常见的方法是将每个模式添加到Router作为自定义Route,并使用相同的paths选项(Route::add()中的第二个参数)。 至于注释路由,它可以为@Route方法选择少量Action指令。 这种方式主要用于使用因为URL生成方便Route(路由名称)将比通用方法更快。

问候