我做了3个表,即Roles
、Users
和Blogs
。角色与具有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。