php自动生成curd,ThinkPHP5 快速curd

卫华奥
2023-12-01

thinkphp5-fast-curd

项目介绍

适用于ThinkPHP5(简单、快速的构建CURD)

通过以下代码简单的常规CURD就完成了,接下来就可以去处理前端表单或列表了

...

// 类放置位置

use app\traits\Resources;

use app\models\ArticleModel;

class Article extends Controller

{

use Resources;

public function __construct(Request $request = null)

{

parent::__construct($request);

$this->db = new ArticleModel();

}

}

大部分需求可以使用控制器前置操作或者模型事件 加上模型关联处理

如不能满足需求可在控制器内重写Resources内方法

PHP方法优先级

自身方法 > trait > 父类

class BaseController

{

public function index()

{

return 'base';

}

}

class ArticleController extends BaseController

{

use Test;

public function index()

{

return 'article';

}

}

trait Test

{

public function index()

{

return 'trait';

}

public function create()

{

return 'create';

}

}

实现代码

namespace app\traits;

/**

* @author renjianfei

* @datetime 2018/09/13

*/

trait Resources

{

private $db = null;

private $pk = 'id';

private $softDeleteKey = 'visible';

/**

* 排序方式

*/

protected function sort($sort = '')

{

return empty($sort) ? $this->pk .' desc' : $sort;

}

/**

* 列表筛选

*/

protected function filter()

{

return array_filter(input());

}

/**

* @param $list 列表数据

*/

protected function afterIndex($list = [])

{

// TODO xxxx

}

/**

* 显示资源列表

*/

public function index()

{

$list = $this->db->order($this->sort())->where($this->filter())->paginate();

$this->afterIndex($list);

return view('',[

'list' => $list,

]);

}

/**

* 显示创建资源表单前

*/

public function beforeCreate()

{

}

/**

* 显示创建资源表单

*/

public function create()

{

$this->beforeCreate();

return view();

}

/**

* 保存新建的资源前置操作

*/

protected function beforeSave()

{

}

/**

* 保存新建的资源

*/

public function save()

{

$this->beforeSave();

$res = $this->db->allowField(true)->save(array_filter(input())) ? $this->success('操作成功') : $this->error('保存失败');

}

/**

* 显示指定的资源

*/

public function read($id)

{

$info = $this->db->findOrFail($id);

return view('',[

'info' => $info

]);

}

/**

* 显示指定资源表单

*/

public function edit($id)

{

$info = $this->db->findOrFail($id);

return view('edit',[

'info' => $info

]);

}

/**

* 更新资源前

*/

public function beforeUpdate()

{

}

/**

* 保存更新的资源

*/

public function update($id)

{

$this->beforeUpdate();

$this->db->allowField(true)->save(input(),[$this->pk => $id]) ? $this->success('保存成功',url('index')) : $this->error('保存失败');

}

/**

* 软删除指定的资源

*/

public function delete($id)

{

$this->db->update([

$this->softDeleteKey = 0

],[

'id' => $id

]);

}

/**

* 真实删除某行记录

*/

public function destroy($id)

{

$this->db->where('id', $id)->delete() ? $this->success('删除成功') : $this->error('删除失败');

}

}

 类似资料: