# 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'];
}
~~~