1.规划好数据表 !!!
直接用命令创建后台管理菜单
//生成fa_test表的CRUD
php think crud -t test
//生成fa_test表的CRUD且一键生成菜单
php think crud -t test -u 1
//删除fa_test表生成的CRUD
php think crud -t test -d 1
//生成fa_test表的CRUD且控制器生成在二级目录下
php think crud -t test -c mydir/test
//生成fa_test_log表的CRUD且生成对应的控制器为testlog
php think crud -t test_log -c testlog
//生成fa_test表的CRUD且对应的模型名为testmodel
php think crud -t test -m testmodel
//生成fa_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think crud -t test -r category -k category_id -p id
//生成fa_test表的CRUD且所有以list或data结尾的字段都生成复选框
php think crud -t test --setcheckboxsuffix=list --setcheckboxsuffix=data
//生成fa_test表的CRUD且所有以image和img结尾的字段都生成图片上传组件
php think crud -t test --imagefield=image --setcheckboxsuffix=img
//关联多个表,参数传递时请按顺序依次传递,支持以下几个参数relation/relationmodel/relationforeignkey/relationprimarykey/relationfields/relationmode
php think crud -t test --relation=category --relation=admin --relationforeignkey=category_id --relationforeignkey=admin_id
说明 :1. 如果配置了数据表前缀 ,则不用指定前缀
2. 如果数据表为 fa_test_log
,在创建的时候需要指定名字,否则为创建在 test / log.php
,处于test 目录下。指定名字 -c testlog
3. 通过命令行生成的文件有 (例如 php think crud -t share_img -c share/img)
application/admin/controller/share/Img.php
application/admin/mode/share/Img.php
application/admin/validate/share/Img.php
application/admin/view/share/Img/add.html
application/admin/view/share/Img/edit.html
application/admin/view/share/Img/index.html
public/assets/js/backend/share/img.js
创建的目录不存在会自动创建
说一下模型关联。在开始做的时候crud没有添加关联,但是使用的时候部分数据又是需要关联的,这时候我们可以自己来修改。首先要在控制器中 加上 protected $relationSearch = true;
复制下父类的index()方法,在模型查询的时候加入 with
方法
public function index(){
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$total = $this->model
->with(['user','prizes'])
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->with(['user','prizes'])
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
$list = collection($list)->toArray();
$result = array("total" => $total, "rows" => $list);
return json($result);
}
return $this->view->fetch();
}
然后修改模型类
//模型关联
public function user()
{
return $this->belongsTo('app\admin\model\User','user_id','id', [], 'LEFT')->setEagerlyType(0);
}
public function prizes()
{
return $this->belongsTo('app\admin\model\Prizes','prizes_id','id', 'prizes', 'LEFT')->setEagerlyType(0);
}
上面的with
关联的两个数据模型,分别对应模型类的两个方法.
$this->belongsTo(‘app\admin\model\Prizes’,‘prizes_id’,‘id’, ‘prizes’, ‘LEFT’)->setEagerlyType(0);
参数分别表示 模型名,关联外键,关联主键,别名(已废弃),join类型
最后在js文件下,修改 参数名就ok了
{field: 'user.username', title: __('User_id')},
field 参数表示需要输出的值,这里表示关联的user表的username字段,__(‘User_id’)表示的多语言,配置在application/admin/lang/zh-cn/share/img.php
生成完目录后需要生成菜单,目录还是比较简单
//一键生成share控制器的权限菜单
php think menu -c share
//一键生成share/img控制器的权限菜单
php think menu -c share/img
//删除share/img控制器生成的菜单
php think menu -c share/img -d 1
//一键全部重新所有控制器的权限菜单
php think menu -c all-controller
官方文档地址(https://doc.fastadmin.net/docs/index.html)