【问题标题】:Cakephp3 prefix routing on specific controllers特定控制器上的 Cakephp3 前缀路由
【发布时间】:2015-04-28 07:33:46
【问题描述】:

我正在尝试设置前缀路由,但仅在某些控制器上我想要一个单独的管理版本,但我似乎只能使其适用于全部或全部。

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

上面在每个控制器上创建了一个管理员前缀,这样当我在 /admin/ 中时,所有指向使用 HTML 帮助程序创建的任何控制器的链接都添加了管理员前缀,即使我被重定向到登录它也是前缀与 /admin/。我需要创建每个控制器的管理员版本或在每个链接前缀上指定=>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. 好像它试图将我重定向到登录,即使我将代码还原回页面加载并且我没有被注销。

提前感谢您的帮助。

【问题讨论】:

    标签: routing cakephp-3.0


    【解决方案1】:

    与同事交谈后发现,我对前缀路由的工作原理略有误解。将某些控制器/路由连接到前缀是一个错误的概念。可以使用前缀访问所有控制器,我只需要使用我的应用程序中的链接来确保用户转到适当的位置 - 即,如果我想保留 'admin' 前缀,请指定 'prefix'=>'false'。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2015-10-27
      • 1970-01-01
      • 2015-07-17
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多