... ... ... ... ... ... ... ... ... ... ...
控制器源码(apps/example/controller/Table.php) 复制
<?php
namespace app\example\controller;

use 
app\common\controller\Front;

class 
Table extends Front
{
    private 
$msg '操作成功,仅作演示,不修改数据。';
    
    public function 
_initialize()
    {
        
$this->request->filter('strip_tags,htmlspecialchars');
        
        
parent::_initialize();
    }
    
    public function 
index()
    {
        
$this->assign('fields',$this->fields());
        
        
$this->assign('table',$this->createTable());
        
        return 
$this->fetch();
    }
    
    public function 
json()
    {
        
$args = array();
        
$args['cache']    = false;
        
$args['result']   = 'level';
        
$args['controll'] = 'menus';
        
$args['search']   = $this->query['searchText'];
        
$args['limit']    = 0;
        
$args['page']     = 0;
        
$args['sort']     = 'term_order';
        
$args['order']    = 'desc';
        
$list model('common/Menu','loglic')->select(DcArrayEmpty($args));
        return 
json(DcEmpty($list,[]));
    }
    
    
//新增
    
public function create()
    {
        return 
$this->success($this->msg);
    }
    
    
//删除
    
public function delete()
    {
        return 
$this->success($this->msg);
    }
    
    
//修改
    
public function edit()
    {
        return 
$this->success($this->msg);
    }
    
    
//排序
    
public function sort()
    {
        return 
$this->success($this->msg);
    }
    
    
//预览
    
public function preview()
    {
        return 
$this->success($this->msg);
    }
    
    
//生成表格
    
private function createTable()
    {
        
//定义表格字段列表
        
$items DcTableColumns($this->fields($this->query));
        
//重置表格事件与回调
        
$items['operate']['data-events'] = 'events';
        
$items['operate']['data-formatter'] = 'operate';
        
//生成表格
        
return DcBuildTable([
            
'data-name'               => 'example/table/index',
            
'data-escape'             => false,
            
'data-toggle'             => 'bootstrap-table',
            
'data-unique-id'          => 'term_id',
            
'data-id-field'           => 'term_id',
            
'data-select-item-name'   => 'id[]',
            
//请求
            
'data-url'                => DcUrl('example/table/json',$this->query),
            
'data-url-sort'           => DcUrl('example/table/sort', ['id'=>'']),
            
'data-url-edit'           => DcUrl('example/table/edit', ['id'=>'']),
            
'data-url-delete'         => DcUrl('example/table/delete', ['id'=>'']),
            
'data-url-preview'        => DcUrl('example/table/preview', ['id'=>'']),
            
'data-query-params'       => 'daicuo.table.query',
            
'data-query-params-type'  => 'params',
            
//工具栏
            
'data-toolbar'            => '.toolbar',
            
'data-toolbar-align'      => 'none float-md-left',
            
//搜索栏
            
'data-search'             => true,
            
'data-search-align'       => 'none float-md-right',
            
'data-search-text'        => $this->query['searchText'],
            
//按钮栏
            //'data-buttons'          => 'function',
            
'data-buttons-align'      => 'right',
            
'data-buttons-prefix'     => 'btn',
            
'data-buttons-class'      => 'purple',
            
'data-show-search-button' => true,
            
'data-show-refresh'       => true,
            
'data-show-toggle'        => true,
            
'data-show-fullscreen'    => true,
            
'data-show-columns'       => true,
            
//分页
            
'data-pagination'         => false,
            
'data-page-number'        => $this->site['page'],
            
'data-page-size'          => 10,
            
'data-page-list'          => '[10, 25, 50, 100]',
            
'data-side-pagination'    => 'server',
            
'data-total-field'        => 'total',
            
'data-data-field'         => 'data',
            
//排序
            
'data-sortable'           => true,
            
'data-sort-name'          => $this->query['sortName'],
            
'data-sort-order'         => $this->query['order'],
            
'data-sort-class'         => 'table-active',
            
'data-sort-stable'        => false,
            
//单元格属性列表
            
'columns'                 => $items,
        ]);
    }
    
    
//定义表格字段
    
private function fields($data=[])
    {
        return 
DcFields([
            
'term_id' => [
                
'order'           => 1,
                
'data-type'       => 'hidden',
                
'data-value'      => $data['term_id'],
                
'data-filter'     => false,
                
'data-visible'    => true,
                
'data-sortable'   => true,
                
'data-width'      => '80',
                
'data-width-unit' => 'px',
            ],
            
'term_name' => [
                
'order'           => 2,
                
'data-filter'     => false,
                
'data-visible'    => true,
                
'data-align'      => 'left',
            ],
            
'term_status' => [
                
'order'           => 4,
                
'data-type'       => 'select',
                
'data-value'      => DcEmpty($data['term_status'],'normal'),
                
'data-option'     => model('common/Attr','loglic')->statusOption(),
                
'data-filter'     => true,
                
'data-visible'    => false,
            ],
            
'term_status_text' => [
                
'order'           => 5,
                
'data-title'      => lang('term_status'),
                
'data-visible'    => true,
                
'data-width'      => 100,
            ],
            
'term_type' => [
                
'order'           => 6,
                
'type'            => 'select',
                
'data-option'     => model('common/Attr','loglic')->target(),
                
'data-value'      => DcEmpty($data['term_type'],'_self'),
                
'data-filter'     => true,
                
'data-visible'    => true,
                
'data-width'      => 100,
            ],
            
'term_parent' => [
                
'order'           => 7,
                
'data-type'       => 'select',
                
'data-value'      => $data['term_parent'],
                
'data-option'     => DcTermOption(['controll'=>'menus']),
                
'data-filter'     => true,
                
'data-visible'    => true,
                
'data-width'      => 100,
            ],
            
'term_order' => [
                
'order'           => 8,
                
'data-type'       => 'number',
                
'data-value'      => intval($data['term_order']),
                
'data-filter'     => false,
                
'data-visible'    => true,
                
'data-width'      => 80,
                
'data-sortable'   => true,
                
'data-sort-name'  => 'op_order',
                
'data-order'      => 'asc',
                
//'data-formatter'  => 'daicuo.admin.table.sortFormatter',
            
],
            
'term_action' => [
                
'order'           => 9,
                
'data-type'       => 'select',
                
'data-option'     => ['left'=>lang('left'),'top'=>lang('top')],
                
'data-value'      => DcEmpty($data['term_action'],'left'),
                
'data-filter'     => true,
                
'data-visible'    => true,
                
'data-width'      => 100,
            ],
            
'term_controll' => [
                
'order'           => 10,
                
'data-type'       => 'text',
                
'data-value'      => 'menus',
                
'data-filter'     => true,
                
'data-visible'    => true,
                
'data-width'      => 100,
            ],
            
'term_module' => [
                
'order'           => 11,
                
'data-type'       => 'text',
                
'data-value'      => 'example',
                
'data-filter'     => true,
                
'data-visible'    => true,
                
'data-width'      => 100,
            ],
        ]);
    }
}
模板源码(apps/example/theme/default/table/index.tpl) 复制
{extend name="apps/common/view/front.tpl" /}
<!--meta-->
{block name="header_meta"}
<title>DaiCuo表格生成实例-{:config('common.site_name')}</title>
<meta name="keywords" content="DaiCuo表格排序,DaiCuo表格加载" />
<meta name="description" content="呆错后台管理框架表格组件的生成、排序、数据加载演示与开发实例。"  />
{/block}
<!--header-->
{block name="header"}
  {include file="apps/common/view/widget/header.tpl" /}
{/block}
<!--main-->
{block name="main"}
<div class="container pt-2">
  <form class="mb-3" action="{:DcUrl('example/sort/json')}" method="post" data-toggle="form">
    <div class="form-row collapse" id="filter-row">
      {:DcFormFilter(DcFormItems($fields))}
    </div>
    <input type="hidden" name="_method" value="delete">
    <div class="toolbar d-flex justify-content-between d-md-block" id="toolbar">
      <a class="btn btn-sm btn-danger" href="{:DcUrl('example/table/create')}" data-toggle="create" data-modal-xl="0">
        <i class="fa fa-fw fa-plus"></i> {:lang('create')}
      </a>
      <a class="btn btn-sm btn-dark" href="#filter-row" data-toggle="collapse">
        <i class="fa fa-fw fa-filter"></i> {:lang('filter')}
      </a>
      <a class="btn btn-sm btn-info" href="javascript:;" data-toggle="refresh" name="refresh">
        <i class="fa fa-fw fa-refresh"></i> {:lang('refresh')}
      </a>
    </div>
    {$table}
  </form>
  <div class="card mb-3">
    <div class="card-header d-flex justify-content-between">
      <font>控制器源码(apps/example/controller/Table.php)</font>
      <a class="font-weight-bold text-purple" href="javascript:;" data-toggle="copy" data-clipboard-target="#controller">复制</a>
    </div>
    <div class="card-body" id="controller">
      {:exampleCode('apps/example/controller/Table.php')}
    </div>
  </div>
  <div class="card mb-3">
    <div class="card-header d-flex justify-content-between">
      <font>模板源码(apps/example/theme/default/table/index.tpl)</font>
      <a class="font-weight-bold text-purple" href="javascript:;" data-toggle="copy" data-clipboard-target="#view">复制</a>
    </div>
    <div class="card-body" id="view">
      {:exampleCode('apps/example/theme/default/table/index.tpl')}
    </div>
  </div>
</div>
{/block}
<!--javascript-->
{block name="js"}
<script>
//表格单元格格式化回调函数实例
var operate = function(value, row, index, field){
    return '<i class="fa fa-fw fa-pencil mx-1" data-toggle="edit-test"></i><i class="fa fa-fw fa-trash-o mx-1 text-danger" data-toggle="delete-test"></i><i class="fa fa-fw fa-arrows-alt mx-1 text-purple dc-handle" data-toggle="sort"></i>';
};
//表格单元格事件监听实例
var events = {
    'click [data-toggle="edit-test"]': function (event, value, row, index) {
        alert(row.term_id);
    },
    'click [data-toggle="delete-test"]': function (event, value, row, index) {
        alert(row.term_name);
    },
};
//页面加载完毕后调用表格组件
$(function() {
    //呆错JS库(表格)初始化实例
    daicuo.table.init({
        selector: 'table[data-toggle="bootstrap-table"]',
        //表格插件加载成功后再动态加载呆错拖拽插件
        onSuccess: function(element){
            //监听刷新按钮
            $('[data-toggle="refresh"]').on("click", document.body, function() {
                daicuo.table.refresh(element);
            });
            //插拽排序插件
            daicuo.sortable.tableInit({
                selector  : 'table[data-toggle="bootstrap-table"]'
            });
        },
        //表格插件加载失败
        onFail:function(){
            daicuo.bootstrap.dialog('表格插件加载失败');
        }
    });
    //bootstrap-table插件原生事件监听实例
    $('table[data-toggle="bootstrap-table"]').on('dbl-click-row.bs.table',function(row, element, field) {
        daicuo.bootstrap.dialog('<p>row: 与单击的行对应的记录</p><p>element: tr元素,</p><p>field: 与单击的单元格对应的字段名称。</p>','表格行双击事件监听实例');
    });
});
</script>
{/block}
<!--footer-->
{block name="footer"}
  {include file="apps/common/view/widget/footer.tpl" /}
{/block}