Curd trait引入

后台使用Curd trait, 能大大提高开发效率以及代码的可复用性, 文件位置:app/admin/traits/Curd.php

默认的CURD方法有:

参数 说明
index 列表
add 添加
edit 编辑
delete 删除
export 导出
modify 属性修改

使用方法

  • 在类里面引入use \app\admin\traits\Curd;
  • 在类直接引入use EasyAdmin\annotation\NodeAnotation;,(备注:因为方法内有使用到权限注解,至少要引入该类,不然会在节点更新的时候报出异常)
  • 初始化当前模型

代码示例

<?php
namespace app\admin\controller;

use app\admin\model\SystemConfig;
use app\common\controller\AdminController;
use EasyAdmin\annotation\ControllerAnnotation;
use EasyAdmin\annotation\NodeAnotation;
use think\App;

/**
 * @ControllerAnnotation(title="测试控制器")
 */
class Test extends AdminController{

    use \app\admin\traits\Curd;

    public function __construct(App $app){
        parent::__construct($app);
        $this->model = new SystemConfig();
    }
}

覆盖方法修改

因为默认的Curd不适用你的需求,请复制app/admin/traits/Curd.php对应的方法到你的控制器下进行覆盖修改。

index()列表关联查询

  • 修改控制器的属性relationSerach为true
  • 模型关联请使用该方法withJoin()

代码示例控制器

<?php
namespace app\admin\controller\mall;

use app\admin\model\MallGoods;
use app\admin\traits\Curd;
use app\common\controller\AdminController;
use EasyAdmin\annotation\ControllerAnnotation;
use EasyAdmin\annotation\NodeAnotation;
use think\App;

/**
 * @ControllerAnnotation(title="商城商品管理")
 */
class Goods extends AdminController
{

    use Curd;

    protected $relationSerach = true;

    public function __construct(App $app)
    {
        parent::__construct($app);
        $this->model = new MallGoods();
    }

    /**
     * @NodeAnotation(title="列表")
     */
    public function index()
    {
        if ($this->request->isAjax()) {
            if (input('selectFields')) {
                return $this->selectList();
            }
            list($page, $limit, $where) = $this->buildTableParames();
            $count = $this->model
                ->withJoin('cate', 'LEFT')
                ->where($where)
                ->count();
            $list = $this->model
                ->withJoin('cate', 'LEFT')
                ->where($where)
                ->page($page, $limit)
                ->order($this->sort)
                ->select();
            $data = [
                'code'  => 0,
                'msg'   => '',
                'count' => $count,
                'data'  => $list,
            ];
            return json($data);
        }
        return $this->fetch();
    }
}

代码示例模型

<?php
namespace app\admin\model;

use app\common\model\TimeModel;

class MallGoods extends TimeModel
{

    protected $deleteTime = 'delete_time';

    public function cate()
    {
        return $this->belongsTo('app\admin\model\MallCate', 'cate_id', 'id');
    }

}

modify()属性修改限制

为了安全,modify方法默认允许修改的字段有:

  • status
  • sort
  • remark
  • is_delete
  • is_auth
  • title

如果默认字段不适用你的需求请, 请在控制器下覆盖该属性allowModifyFileds值即可。

<?php
namespace app\admin\controller;

use app\common\controller\AdminController;
use EasyAdmin\annotation\ControllerAnnotation;
use EasyAdmin\annotation\NodeAnotation;

/**
 * @ControllerAnnotation(title="测试控制器")
 */
class Test extends AdminController{

    use \app\admin\traits\Curd;

    protected $allowModifyFileds = ['username','sort'];

}
© zhongshaofa all right reserved,powered by Gitbook文件修订时间: 2024-07-18 16:42:59

results matching ""

    No results matching ""

    results matching ""

      No results matching ""