# 后台手册

后台已接口形式返回参数给前端,前后端用json格式交互

# 控制器

在app/common/controller下定义了 基类AdminBase.php, 后台所有的控制器都继承自它,基类使用traits引入了 index/add/edit/find/status/delele/selectList/selectpage/export这九个方法,位置在app/admin/traits/Curd.php,所有继承自AdminBase.php的类都有这九个方法,online一键生成curd的标准控制器如下:

class Test extends AdminBase
{

    protected $model = null;

    protected $validate = null;

    protected $relationSearch = false;

    public function __construct(App $app)
    {
        parent::__construct($app);

        $this->model = new \app\common\model\Test();

        $this->validate = \app\admin\validate\Test::class;
    }

    /**
     * 默认生成的控制器所继承的父类中有index/add/edit/find/status/delele/selectList/selectpage/export 九个方法
     * 因此在当前控制器中可不用编写增删改查的代码,如果需要自己控制这部分逻辑
     * 需要将app/admin/traits/Crud.php中对应的方法复制到当前控制器,进行修改
     */
}
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

基类中所有方法通过 traits引入,具体方法如下:

class AdminBase
{

    /**
     * 列表
     */
    public function index(){ }

    /**
     * 添加
     */
    public function add(){ }

     /**
     * 修改
     */
    public function edit($id){ }
    
     /**
     * 查找
     */
    public function find($id){ }

     /**
     *状态启用、禁用
     */
    public function status($id, $status){ }

     /**
     * 数据删除
     */
    public function delete($id){ }

     /**
     * 下拉选择
     */
    public function selectPage(){ }

     /**
     * 下拉分页
     */
    public function selectPage(){ }

     /**
     * 导出
     */
    public function export(){ }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

当我们的控制器继承自基类AdminBase后,我们就可以使用以下属性,在当前控制器可以通过$this->属性名来调用这些属性,也可以在当前控制器定义这些属性来覆盖父类的属性

    protected $model = null; //当前应用model

    protected $adminId; //管理员id

    protected $relationSearch = false; //index是否有关联查询

    /**
     * 不导出的字段信息
     * @var array
     */
    protected $noExportFields = ['delete_time', 'update_time'];

1
2
3
4
5
6
7
8
9
10
11
12

# 模型(model)

在app/common/model 文件夹下定义了 模型基类BaseModel.php 基类中定义如下:

class BaseModel extends Model
{
    /**
     * 自动时间戳类型
     *
     */
    protected $autoWriteTimestamp = 'datetime';
    /**
     * 添加时间
     *
     */
    protected $createTime = 'create_time';

    /**
     * 更新时间
     *
     */
    protected $updateTime = 'update_time';
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

online在线代码生成的model层继承基类模型,生成的标准模型文件格式如下:

class Test extends BaseModel
{

    protected $name = "test";
    // 追加属性
    protected $append = [];
    protected $deleteTime= false; 
}
1
2
3
4
5
6
7
8

如果表中有delete_time 字段,生成的模型的时候 $deleteTime='delete_time',此时删除就变成假删除,删除操作将修改delete_time

# 中间件

admin项目,定义了两个中间件 checkAuth和checkLogin, 位于app/admin/middleware文件夹下面,checkAuth用于校验接口权限,chekLogin用于校验是否登录,如果 不需要验证接口权限和校验登录的控制器或方法,请在app/admin/config/auth.php文件配置。

注:由于接口权限必须登录之后才可以验证,所以不需要验证登录的方法同时也不需要验证接口权限

return [
   
    // 不需要验证登录的控制器
    'no_login_controller' => [
        'ajax',
        'test',
    ],
    // 不需要验证登录的方法
    'no_login_node' => [
        '/admin/passport/userinfo',
        '/admin/passport/index',
        '/admin/passport/logout',
    ],

    // 不需要验证权限的控制器
    'no_auth_controller' => [],

    // 不需要验证权限的方法
    'no_auth_node' => [],
];

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 菜单

一个curd业务需要配置菜单和按钮权限才可以正常访问(online在线生成curd可以自动生成菜单,不用手动填写,以下是手动填写流程)

添加菜单有三种类型:目录、菜单、按钮权限(接口权限)

对应下图三个区域

online表单

# 添加菜单

以测试案例的菜单配置为例

组件路径为前端 src/view 下面的页面路径

路由地址为浏览器显示的路径,具有唯一性 建议和组件路径保持一致

# 添加页面按钮(接口权限)

页面所有请求的后台接口都要配置 按钮权限 权限地址为后台接口地址,(add edit find delete export...都要配置)

最近一次更新: 7/25/2022, 4:59:50 PM