我制作了3个表,分别为Roles
,Users
和Blogs
。角色与具有Users
外键的role_id
具有一对多关系,同样,Users
与具有Blogs
的{{1}}具有一对多关系外键。我最初烤了所有3个用户,一切都很好。然后,我决定尝试为user_id
加上admin
前缀。
Roles
我在Router::prefix('admin', function ($routes) {
$routes->connect('/roles', ['controller' => 'Roles', 'action' => 'index]
)};
文件夹中创建了一个文件夹(Controller> Admin),并将我的Controller
放在此处。我将RolesController
的命名空间更改为RolesController
。我还通过将namespace App\Controller\Admin
视图文件放在Admin文件夹(“管理”>“角色”>“ add.ctp”,“ edit.ctp”,“ index.ctp”,“ view.ctp”)中来调整了文件位置。
每次我尝试访问Roles
时,都会收到一条错误消息:
错误:与“ array('action'=>'add','prefix'=>'admin','plugin'=> NULL,'controller'=>'Roles','_ext'=>匹配的路由NULL,)“找不到。当前连接的路由均不符合提供的参数。将匹配的路由添加到config / routes.php
传递的上下文是:
localhost:8765/admin/roles
我对Cakephp相当陌生,有人可以帮助我解决这个问题吗?任何建议将不胜感激。
答案 0 :(得分:1)
通过添加$routes->connect('/roles', ['controller' => 'Roles', 'action' => 'index]
,您只路由/admin/roles
(索引操作),而不路由角色的其他任何操作。
如果您仅打算在Admin中拥有角色,则应仅在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。