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('删除失败');
}
}