コード例 #1
0
 /**
  * 显示页面
  * @author jry <*****@*****.**>
  */
 public function display()
 {
     // 编译data_list中的值
     foreach ($this->_table_data_list as &$data) {
         // 编译表格右侧按钮
         if ($this->_right_button_list) {
             foreach ($this->_right_button_list as $right_button) {
                 // 禁用按钮与隐藏比较特殊,它需要根据数据当前状态判断是显示禁用还是启用
                 if ($right_button['type'] === 'forbid') {
                     $right_button = $right_button['forbid' . $data['status']];
                 }
                 if ($right_button['type'] === 'recycle') {
                     if ($data['status'] === '0' || $data['status'] === '1') {
                         $right_button = $right_button['recycle1'];
                     } else {
                         $right_button = $right_button['recycle' . $data['status']];
                     }
                 }
                 // 将约定的标记__data_id__替换成真实的数据ID
                 $right_button['href'] = preg_replace('/__data_id__/i', $data[$this->_table_data_list_key], $right_button['href']);
                 // 编译按钮属性
                 $right_button['attribute'] = $this->compileHtmlAttr($right_button);
                 $data['right_button'][$right_button['name']] = $right_button;
             }
         }
         /**
          * 修改列表数据
          * 有时候列表数据需要在最终输出前做一次小的修改
          * 比如管理员列表ID为1的超级管理员右侧编辑按钮不显示删除
          */
         if ($this->_alter_data_list) {
             foreach ($this->_alter_data_list as $alter) {
                 if ($data[$alter['condition']['key']] === $alter['condition']['value']) {
                     if ($alter['alter_data']['right_button']) {
                         foreach ($alter['alter_data']['right_button'] as &$val) {
                             if (!$val['attribute']) {
                                 $val['href'] = preg_replace('/__data_id__/i', $data[$this->_table_data_list_key], $val['href']);
                                 $val['attribute'] = $this->compileHtmlAttr($val);
                                 // 编译按钮属性
                             }
                         }
                     }
                     $data = array_merge($data, $alter['alter_data']);
                 }
             }
         }
         // 根据表格标题字段指定类型编译列表数据
         foreach ($this->_table_column_list as &$column) {
             switch ($column['type']) {
                 case 'status':
                     switch ($data[$column['name']]) {
                         case '-1':
                             $data[$column['name']] = '<i class="fa fa-trash text-danger"></i>';
                             break;
                         case '0':
                             $data[$column['name']] = '<i class="fa fa-ban text-danger"></i>';
                             break;
                         case '1':
                             $data[$column['name']] = '<i class="fa fa-check text-success"></i>';
                             break;
                     }
                     break;
                 case 'byte':
                     $data[$column['name']] = $this->formatBytes($data[$column['name']]);
                     break;
                 case 'icon':
                     $data[$column['name']] = '<i class="fa ' . $data[$column['name']] . '"></i>';
                     break;
                 case 'date':
                     $data[$column['name']] = time_format($data[$column['name']], 'Y-m-d');
                     break;
                 case 'datetime':
                     $data[$column['name']] = time_format($data[$column['name']]);
                     break;
                 case 'time':
                     $data[$column['name']] = time_format($data[$column['name']]);
                     break;
                 case 'avatar':
                     $data[$column['name']] = '<img style="width:40px;height:40px;" src="' . get_cover($data[$column['name']]) . '">';
                     break;
                 case 'picture':
                     $data[$column['name']] = '<img class="picture" src="' . get_cover($data[$column['name']]) . '">';
                     break;
                 case 'pictures':
                     if (!is_array($data[$column['name']])) {
                         $temp = explode(',', $data[$column['name']]);
                     }
                     $data[$column['name']] = '<img class="picture" src="' . get_cover($temp[0]) . '">';
                     break;
                 case 'type':
                     $form_item_type = C('FORM_ITEM_TYPE');
                     $data[$column['name']] = $form_item_type[$data[$column['name']]][0];
                     break;
                 case 'callback':
                     // 调用函数
                     if (is_array($column['param'])) {
                         $data[$column['name']] = call_user_func_array($column['param'], array($data[$column['name']]));
                     } else {
                         $data[$column['name']] = call_user_func($column['param'], $data[$column['name']]);
                     }
                     break;
             }
             if (is_array($data[$column['name']]) && $column['name'] !== 'right_button') {
                 $data[$column['name']] = implode(',', $data[$column['name']]);
             }
         }
     }
     //编译top_button_list中的HTML属性
     if ($this->_top_button_list) {
         foreach ($this->_top_button_list as &$button) {
             $button['attribute'] = $this->compileHtmlAttr($button);
         }
     }
     $this->assign('meta_title', $this->_meta_title);
     // 页面标题
     $this->assign('top_button_list', $this->_top_button_list);
     // 顶部工具栏按钮
     $this->assign('search', $this->_search);
     // 搜索配置
     $this->assign('tab_nav', $this->_tab_nav);
     // 页面Tab导航
     $this->assign('table_column_list', $this->_table_column_list);
     // 表格的列
     $this->assign('table_data_list', $this->_table_data_list);
     // 表格数据
     $this->assign('table_data_list_key', $this->_table_data_list_key);
     // 表格数据主键字段名称
     $this->assign('table_data_page', $this->_table_data_page);
     // 表示个数据分页
     $this->assign('right_button_list', $this->_right_button_list);
     // 表格右侧操作按钮
     $this->assign('alter_data_list', $this->_alter_data_list);
     // 表格数据列表重新修改的项目
     $this->assign('extra_html', $this->_extra_html);
     //是否ajax提交
     // 显示页面
     $this->assign('is_builder', 'list');
     // Builder标记
     parent::display($this->_template);
 }
コード例 #2
0
 /**
  * 显示页面
  * @author jry <*****@*****.**>
  */
 public function display()
 {
     //额外已经构造好的表单项目与单个组装的的表单项目进行合并
     $this->_form_items = array_merge($this->_form_items, $this->_extra_items);
     //编译表单值
     if ($this->_form_data) {
         foreach ($this->_form_items as &$item) {
             if ($this->_form_data[$item['name']]) {
                 $item['value'] = $this->_form_data[$item['name']];
             }
         }
     }
     $this->assign('meta_title', $this->_meta_title);
     //页面标题
     $this->assign('tab_nav', $this->_tab_nav);
     //页面Tab导航
     $this->assign('post_url', $this->_post_url);
     //标题提交地址
     $this->assign('form_items', $this->_form_items);
     //表单项目
     $this->assign('form_data', $this->_form_data);
     //表单项目默认值
     $this->assign('ajax_submit', $this->_ajax_submit);
     //额外HTML代码
     $this->assign('submit_title', $this->_submit_title);
     //确定按钮文本自定义
     $this->assign('extra_html', $this->_extra_html);
     //是否ajax提交
     // 显示页面
     $this->assign('is_builder', 'form');
     // Builder标记
     parent::display($this->_template);
 }