2015-04-28 33 views
0

我試圖設置前綴路由,但只在某些控制器上,我想要一個單獨的管理員版本,但我似乎只能使它適用於全部或全部。CakePHP3在特定控制器上的前綴路由

$routes->prefix('admin', function ($routes) { 
    $routes->connect('/:controller/:action/*', [], ['routeClass' => 'Cake\Routing\Route\InflectedRoute']); 
}); 

上面創建的每個控制器上的管理員前綴,這樣當我/管理範圍內/使用HTML幫助創建的任何控制器各個環節都有管理員前綴加入他們,甚至當我重定向到登錄它的前綴是/ admin /。我需要創建每個控制器的管理員版本或在每個鏈接上指定prefix => false。

我以爲這會是這樣的:

$routes->prefix('admin', function ($routes) { 
    $routes->connect('/projects/:action/*', ['controller' => 'Projects'], ['routeClass' => 'Cake\Routing\Route\InflectedRoute']); 
}); 

但隨着/管理/項目中訪問一個頁面時,這個代碼我得到的錯誤:Error: A route matching "array ('controller' => 'Users', 'action' => 'login', 'prefix' => 'admin', 'plugin' => NULL, '_ext' => NULL,)" could not be found. 彷彿它正試圖重定向我登錄,即使如果我恢復代碼回頁面加載,我還沒有被註銷。

在此先感謝您的幫助。

回答

0

從與同事交談中可以看出,我對前綴路由的工作原理略有誤解。將某些控制器/路由連接到前綴是一個錯誤的概念。所有的控制器都可以使用前綴進行訪問,我只需要使用我的應用程序中的鏈接來確保用戶進入適當的位置 - 即,如果我想要保留「admin」前綴,則指定'prefix'=>'false'。

如果未指定,Cake將自動將當前前綴合併到所有鏈接中。

關於被定向到管理員版本的登錄頁面。我剛剛創建了一個重定向到非管理員版本的管理員登錄方法。