【问题标题】:Phalcon routing, how to set default parameters?Phalcon路由,如何设置默认参数?
【发布时间】:2023-03-30 01:22:01
【问题描述】:

我正在尝试在 Phalcon 1.3.4 中创建动态路由,但如果缺少参数(如 :action:params),则路由不匹配。

这是(工作)代码:

$router = new Phalcon\Mvc\Router(TRUE);
$group = new Phalcon\Mvc\Router\Group([
                                           'namespace' => 'App\\Backoffice',
                                           'controller' => 'Index',
                                       ]);

// All the routes start with /group
$group->setPrefix('/backoffice');

// Adding route to group
$group->add('', ['action' => 'index']); // matches /backoffice
$group->add('/:controller', ['controller' => 1]); // matches /backoffice/moderate
$group->add('/:controller/:action', ['controller' => 1, 'action' => 2]);
$group->add('/:controller/:action/:params', ['controller' => 1, 'action' => 2, 'params' => 3]);

$router->mount($group);

是否可以删除多余的前三个路由而只保留第四个?通过分配默认值来匹配/backoffice/backoffice/moderate

【问题讨论】:

    标签: php routing phalcon


    【解决方案1】:

    这就是我初始化路由器的方式:

    $router = new \Phalcon\Mvc\Router(false);
    $router->removeExtraSlashes(true);
    $router->notFound([
        "module" => "page",
        "controller" => 'index',
        "action"     => 'index',
    ]);
    

    文档中还有一个 setDefaults() 方法:http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Router.html

    这有用吗?

    【讨论】:

    • 这样我们就没有动态控制器或动作了。 setDefaults() 方法也对我没有帮助,因为我有多个命名空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多