蛋糕PHP 3.* 前缀路由错误



我做了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 AppControllerAdmin.我还调整了Roles视图文件的文件位置,方法是将其放入管理文件夹(管理员>角色>add.ctp,edit.ctp,index.ctp,view.ctp(。

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

错误:找不到与"数组('操作'=>'添加'、'前缀'=>'admin'、'plugin' => NULL、'controller' =>'角色'、'_ext' => NULL、("匹配的路由。当前连接的路由都与提供的参数不匹配。将匹配的路由添加到配置/路由.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 相当陌生,有人可以帮助我解决这个问题吗?任何建议将不胜感激。

通过添加$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。

最新更新