Cakephp3前缀在特定控制器上的路由

时间:2015-04-28 07:33:47

标签: routing cakephp-3.0

我试图设置前缀路由,但只在某些控制器上,我想要一个单独的管理员版本,但我似乎只能使它适用于所有或不需要。

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

上面在每个控制器上创建一个管理员前缀,这样当我在/ admin /所有使用HTML帮助器创建的控制器的链接时都会添加管理员前缀,即使我被重定向到登录它以/ admin /为前缀。我需要创建每个控制器的管理版本或在每个链接上指定prefix => false。

我认为它会是这样的:

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

但在访问/ admin / projects中的页面时使用此代码我收到错误:Error: A route matching "array ( 'controller' => 'Users', 'action' => 'login', 'prefix' => 'admin', 'plugin' => NULL, '_ext' => NULL, )" could not be found. 好像它试图将我重定向到登录,即使我还原了代码,页面加载,我还没有登出。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

从与同事的谈话中可以看出,我对前缀路由的工作方式略有误解。将某些控制器/路由连接到前缀是错误的概念。可以使用前缀访问所有控制器,我只需要使用我的应用程序中的链接,以确保用户前往适当的位置 - 即指定'前缀' =>' false'如果我想离开' admin'前缀。

如果未指定,Cake会自动将当前前缀合并到所有链接中。

关于被定向到登录页面的管理版本。我刚刚创建了一个管理员登录方法,重定向到非管理员版本。