CakePHP 3. *前缀路由错误

时间:2018-06-20 10:14:36

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

我制作了3个表,分别为RolesUsersBlogs。角色与具有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相当陌生,有人可以帮助我解决这个问题吗?任何建议将不胜感激。

1 个答案:

答案 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