【问题标题】:CakePHP 3.* Prefix routing errorCakePHP 3.* 前缀路由错误
【发布时间】:2018-06-20 10:14:35
【问题描述】:

我做了 3 个表,分别是 RolesUsersBlogs。角色与具有role_id 外键的Users 具有一对多关系,同样,Users 与具有user_id 外键的Blogs 具有一对多关系。我最初烘焙了所有 3 个用户,一切都很好。然后我决定尝试为Roles 加上前缀admin

Router::prefix('admin', function ($routes) {
    $routes->connect('/roles', ['controller' => 'Roles', 'action' => 'index]
)};

我在Controller 文件夹(控制器> 管理员)中创建了一个文件夹,并将我的RolesController 放在那里。我将RolesController 的命名空间更改为namespace App\Controller\Admin。我还调整了我的Roles View 文件的文件位置,方法是将其放入管理文件夹(Admin > Roles > add.ctp、edit.ctp、index.ctp、view.ctp)。

每次我尝试访问 localhost:8765/admin/roles 时,都会收到一条错误消息:

错误:路由匹配“数组('action' => 'add', 'prefix' => 'admin', 'plugin' => NULL, 'controller' => 'Roles', '_ext' => NULL, )" 找不到。当前连接的路由均不匹配提供的参数。在 config/routes.php 中添加匹配的路由

传递的上下文是:

[
    '_base' => '',
    '_port' => (int) 8765,
    '_scheme' => 'http',
    '_host' => 'localhost',
    'params' => [
        'pass' => [],
        'controller' => 'Roles',
        'action' => 'index',
        'prefix' => 'admin',
        'plugin' => null,
        '_matchedRoute' => '/admin/roles',
        '_ext' => null
    ]

我对 cakephp 还很陌生,有人可以帮我解决这个问题吗?任何建议将不胜感激。

【问题讨论】:

  • 每当收到错误时,请始终发布complete错误,即包括full堆栈跟踪 (最好从日志中以正确可读的方式复制)!另外,请务必提及您的 确切 CakePHP 版本(vendor/cakephp/cakephp/VERSION.txtlib/Cake/VERSION.txt 中的最后一行) - 谢谢!话虽如此,很可能是这样的:stackoverflow.com/questions/29782797/…
  • 非常感谢,并会注意“发布完整错误”:)

标签: cakephp url-routing cakephp-3.x


【解决方案1】:

通过添加$routes->connect('/roles', ['controller' => 'Roles', 'action' => 'index],您只会路由/admin/roles(索引操作),而不是角色的任何其他操作。

如果您只计划在管理员中拥有角色,那么您应该只在您的 Router::prefix 块中添加这一行:

$routes->connect('/roles/:action/*', ['controller' => 'Roles']);

否则,您应该通过添加以下行来添加默认回退(如 / 范围所具有的):(请注意,它可以是 Router::prefix 块中的唯一行):

$routes->fallbacks(DashedRoute::class);

然后您的块将如下所示:

Router::prefix('admin', function ($routes) {
    $routes->fallbacks(DashedRoute::class);
)};

有关 CakePHP 中的后备方法的更多信息,请参阅 https://book.cakephp.org/3.0/en/development/routing.html#fallbacks-method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-14
    • 2011-06-09
    • 2013-10-09
    • 2016-10-18
    • 2014-12-17
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多