我将以下路由添加到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/

    10-09 06:56