/** * 显示页面 * @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); }
/** * 显示页面 * @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); }