我环顾四周,虽然有很多类似的问题,但从未给出过有效的答案:
我正在使用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
是必需的。
当然,这是反向路由过程最简单的用途之一。所以它必须是可以实现的。但是 - 文档对此并不清楚。它可能在那里,但我已经阅读了很多次。
任何人都可以解释如何正确地做到这一点?
由于
瑞克
答案 0 :(得分:1)
对connect()
的调用略有不正确。 _name
参数应该在函数调用的第三个参数中:
$routes->connect('/events', ['controller' => 'Pages', 'action' => 'display', 'events'], ['_name' => 'events']);
所以你可以在模板中使用路线名称:
$this->Html->link('Events', ['_name' => 'events']);