【问题标题】:CakePHP reverse routing not workingCakePHP 反向路由不起作用
【发布时间】:2015-11-03 09:47:17
【问题描述】:

我环顾四周,虽然有许多类似的问题,但从未给出有效的答案:

我使用的是 CakePhp 3.0。我正在尝试将一些基本页面 url 连接并链接到框架。

就正常路由而言,这已按预期工作。出于调试目的,我已经剥离了所有路由,因此以下是目前唯一的活动路由:

Router::scope('/', function ($routes) {
    $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home', '_name' => 'home']);
    $routes->connect('/events', ['controller' => 'Pages', 'action' => 'display', 'events', '_name' => 'events']);
    $routes->fallbacks('DashedRoute');
});

如果您手动转到//events,这些操作将按预期工作。

现在,如果我尝试反转路线(作为最佳实践),我会使用以下内容:

echo $this->Html->link('News', ['controller' => 'Pages', 'action' => 'home', '_full' => true] );

.. 和..

echo $this->Html->link('Events', ['controller' => 'Pages', 'action' => 'events', '_full' => true] );

这些错误地给了我/pages/home/pages/events。其实//events是必须的。

当然,这是反向路由过程最简单的用途之一。所以它必须是可以实现的。但是 - 文档对此并不清楚。它可能在那里,但我已经读了好几遍了。

谁能解释如何正确地做到这一点?

谢谢

瑞克

【问题讨论】:

    标签: routing reverse cakephp-3.0


    【解决方案1】:

    connect() 的调用有点不正确。 _name 参数应该在函数调用的第三个参数中:

    $routes->connect('/events', ['controller' => 'Pages', 'action' => 'display', 'events'], ['_name' => 'events']);
    

    所以你可以在你的模板中使用路由名称:

    $this->Html->link('Events', ['_name' => 'events']);
    

    【讨论】:

    • 非常感谢。第二双眼睛,很明显。
    猜你喜欢
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2016-11-27
    相关资源
    最近更新 更多