2015-11-03 60 views
0

我環顧四周,雖然有一些類似的問題這一點,答案從來沒有因爲工作的:CakePHP的反向路由不工作

我使用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是必需的。

當然,這是反向路由過程最簡單的用法之一..所以它必須是可以實現的。但是 - 文檔對此並不十分清楚。它可能在那裏,但我已經閱讀了好幾遍。

任何人都可以解釋如何正確地做到這一點?

感謝

裏克

回答

1

connect()電話是稍微不正確。該_name參數應在函數調用的第三個參數:

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

所以你可以在你的模板中使用的路線名稱:

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

非常感謝。第二雙眼睛很明顯。 – elb98rm