如何在CakePHP 3的Admin区域中创建AppController

时间:2016-12-23 11:35:23

标签: admin acl prefix cakephp-3.3 cake-bake

我通过在routes.php文件中设置前缀“admin”来创建管理区域:

Router::prefix('admin', function ($routes) {
    // All routes here will be prefixed with `/admin`
    // And have the prefix => admin route element added.
    $routes->fallbacks(DashedRoute::class);
});

现在我跑

  

bin / cake acl_extras aco_sync

它给我以下错误:

Welcome to CakePHP v3.3.10 Console

App : src
Path: C:\wamp\www\d3\src\
PHP : 5.5.12

Fatal error: Class 'App\Controller\Admin\AppController' not found in C:\wamp\www\d3\src\Controller\Admin\ErrorController.php on line 25

从上面的错误我明白它正在src / Controller / Admin /区域中寻找一个AppController,所以我用它创建了一个AppController,其中包含以下代码:

namespace App\Controller\Admin;

use App\Controller\AppController;

class AppController extends Controller
{

}

编辑:我错了。我们不能在此处扩展 Controller ,因为我们没有包含它。我们需要并且实际上想要扩展AppController,因此我们需要将Admin / AppController类命名为AdminAppController扩展AppController?如果是这样,其他本地控制器如何使用它?现在对我来说似乎很困惑。

但现在控制台出现了新的错误:

  

致命错误:无法声明类App \ Controller \ Admin \ AppController   因为该名称已在使用中   第7行的C:\ wamp \ www \ d3 \ src \ Controller \ Admin \ AppController.php

我不确定在/ Admin / name空间中使用本地AppController.php的最佳方法是什么。我是否真的需要一个,我想是的,以便覆盖管理相关的功能,并实际上在第一手修复控制台中的acl_extra acl_sync相关错误。

1 个答案:

答案 0 :(得分:0)

我做到了:

namespace App\Controller\Admin;

use Cake\Controller\Controller;

class AppController extends Controller
{
    .....
}

AND在任何其他管理控制器中,只需执行,例如:对于UsersController:

use App\Controller\**Admin**\AppController;


class UsersController extends AppController
{
   ......
}