多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 当前平台已停止维护,请尽快迁移至[云静Admin TP6](https://gitee.com/worklz/yunj-admin-tp6) [https://gitee.com/worklz/yunj-admin-tp6](https://gitee.com/worklz/yunj-admin-tp6) ***** ## 表格构建器渲染输出 * **方法一:页面内只有单一表格时** > 注意!此方法仅支持渲染一个表格构建器,不需要写视图文件 控制器代码示例如下: ```php namespace app\demo\controller; use yunj\Controller; class FormDemo extends Controller { public function demo(){ $builder=YT('demo') ->state([11=>'正常',22=>"回收站"]) ->filter([ 'name'=>['title'=>'姓名'] ]) ->toolbar(function($state){ $toolbar=['add'=>['type'=>'openPopup','title'=>'添加','icon'=>'layui-icon layui-icon-add-circle','url'=>url('add')]]; switch ($state){ case 11: $toolbar+=[ 22=>['type'=>'asyncEvent','title'=>'移入回收站','dropdown'=>true], ]; break; case 22: $toolbar+=[ 11=>['type'=>'asyncEvent','title'=>'还原','dropdown'=>true], 33=>['type'=>'asyncEvent','title'=>'永久删除','dropdown'=>true], ]; break; } return $toolbar; }) ->defaultToolbar('filter','export','print') ->import(url("demo/importDemo/index")) ->cols(function($state){ $cols=[ 'id'=>['type'=>'checkbox'], 'name'=>['title'=>'姓名'], 'create_time'=>['title'=>'添加时间', 'align'=>'center', 'hide'=>'mobile_hide_hide','templet'=>'datetime'], 'action'=>[ 'title'=>'操作', 'templet'=>'action', 'options'=>[ 'edit'=>['type'=>'openPopup','title'=>'详情','icon'=>'layui-icon layui-icon-survey','url'=>url('edit')] ] ] ]; switch ($state){ case 11: $cols['action']['options']+=[ 22=>['type'=>'asyncEvent','title'=>'移入回收站','dropdown'=>true], ]; break; case 22: $cols['action']['options']+=[ 11=>['type'=>'asyncEvent','title'=>'还原','dropdown'=>true], 33=>['type'=>'asyncEvent','title'=>'永久删除','dropdown'=>true] ]; break; } return $cols; }) ->count(function($filter){ // 固定参数 $state=$filter['state']; $ids=$filter['ids']; // 筛选表单参数 $name=$filter['name']; $whereArr=[]; $whereArr[]=$state?['state','eq',$state]:['state','neq',33]; if($ids) $whereArr[]=['id','in',$ids]; if($name) $whereArr[]=['name_cn','like','%'.$name.'%']; $count = $this->model->getOwnCount($whereArr); return $count; }) ->items(function ($limit_start,$limit_length,$filter,$sort){ // 固定参数 $state=$filter['state']; $ids=$filter['ids']; // 筛选表单参数 $name=$filter['name']; $whereArr=[]; $whereArr[]=$state?['state','eq',$state]:['state','neq',33]; if($ids) $whereArr[]=['id','in',$ids]; if($name) $whereArr[]=['name_cn','like','%'.$name.'%']; $orderArr=$sort+['id'=>'desc']; $items = $this->model->getOwnRows(["*"],$whereArr,$orderArr,$limit_start,$limit_length); return $items; }) ->event(function ($event,$ids){ foreach ($ids as $id){ $whereArr=[['id','eq',$id]]; switch ($event){ case 11: $updateData=['state'=>11]; $whereArr[]=['state','eq',22]; break; case 22: $updateData=['state'=>22]; $whereArr[]=['state','eq',11]; break; case 33: $updateData=['state'=>33]; $whereArr[]=['state','eq',22]; break; default: return error_json(); } if($updateData) $this->model->change($updateData,$whereArr); } return success_json(); }); return view_table($builder); } } ``` 不需要视图文件! * **方法二:自定义页面内容时** > 注意!此方法支持一个页面渲染多个表格构建器,需要写视图文件 控制器代码示例如下: ```php namespace app\demo\controller; use yunj\Controller; class FormDemo extends Controller { public function demo(){ // 表格构建器配置参考方法一 $builder=YT('demo'); // 多个构建器可反复调用此方法 $builder->assign($this); $builder->assign($this); return $this->fetch(); } } ``` 视图代码示例如下: ```html {extend name="$adminPage"} {block name="content"} <table type="yunj" id="demo"></table> {/block} ```