$v) { $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::radio($name, $k, in_array($k, $selected), ['id' => "{$name}-{$k}"])); } return '
' . implode(' ', $html) . '
'; } } if (!function_exists('build_checkboxs')) { /** * 生成复选按钮组 * @param string $name * @param array $list * @param mixed $selected * @return string */ function build_checkboxs($name, $list = [], $selected = null) { $html = []; $selected = is_null($selected) ? [] : $selected; $selected = is_array($selected) ? $selected : explode(',', $selected); foreach ($list as $k => $v) { $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::checkbox($name, $k, in_array($k, $selected), ['id' => "{$name}-{$k}"])); } return '
' . implode(' ', $html) . '
'; } } if (!function_exists('build_category_select')) { /** * 生成分类下拉列表框 * @param string $name * @param string $type * @param mixed $selected * @param array $attr * @param array $header * @return string */ function build_category_select($name, $type, $selected = null, $attr = [], $header = []) { $tree = Tree::instance(); $tree->init(Category::getCategoryArray($type), 'pid'); $categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name'); $categorydata = $header ? $header : []; foreach ($categorylist as $k => $v) { $categorydata[$v['id']] = $v['name']; } $attr = array_merge(['id' => "c-{$name}", 'class' => 'form-control selectpicker'], $attr); return build_select($name, $categorydata, $selected, $attr); } } if (!function_exists('build_toolbar')) { /** * 生成表格操作按钮栏 * @param array $btns 按钮组 * @param array $attr 按钮属性值 * @return string */ function build_toolbar($btns = null, $attr = []) { $auth = \app\admin\library\Auth::instance(); $controller = str_replace('.', '/', strtolower(think\Request::instance()->controller())); $btns = $btns ? $btns : ['refresh', 'add', 'edit', 'del', 'import']; $btns = is_array($btns) ? $btns : explode(',', $btns); $index = array_search('delete', $btns); if ($index !== false) { $btns[$index] = 'del'; } $btnAttr = [ 'refresh' => ['javascript:;', 'btn btn-primary btn-refresh', 'fa fa-refresh', '', __('Refresh')], 'add' => ['javascript:;', 'btn btn-success btn-add', 'fa fa-plus', __('Add'), __('Add')], 'edit' => ['javascript:;', 'btn btn-success btn-edit btn-disabled disabled', 'fa fa-pencil', __('Edit'), __('Edit')], 'del' => ['javascript:;', 'btn btn-danger btn-del btn-disabled disabled', 'fa fa-trash', __('Delete'), __('Delete')], 'import' => ['javascript:;', 'btn btn-info btn-import', 'fa fa-upload', __('Import'), __('Import')], ]; $btnAttr = array_merge($btnAttr, $attr); $html = []; foreach ($btns as $k => $v) { //如果未定义或没有权限 if (!isset($btnAttr[$v]) || ($v !== 'refresh' && !$auth->check("{$controller}/{$v}"))) { continue; } list($href, $class, $icon, $text, $title) = $btnAttr[$v]; //$extend = $v == 'import' ? 'id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"' : ''; //$html[] = ' ' . $text . ''; if ($v == 'import') { $template = str_replace('/', '_', $controller); $download = ''; if (file_exists("./template/{$template}.xlsx")) { $download .= "
  • XLSX模版
  • "; } if (file_exists("./template/{$template}.xls")) { $download .= "
  • XLS模版
  • "; } if (file_exists("./template/{$template}.csv")) { $download .= empty($download) ? '' : "
  • "; $download .= "
  • CSV模版
  • "; } $download .= empty($download) ? '' : "\n "; if (!empty($download)) { $html[] = << EOT; } else { $html[] = ' ' . $text . ''; } } else { $html[] = ' ' . $text . ''; } } return implode(' ', $html); } } if (!function_exists('build_heading')) { /** * 生成页面Heading * * @param string $path 指定的path * @return string */ function build_heading($path = null, $container = true) { $title = $content = ''; if (is_null($path)) { $action = request()->action(); $controller = str_replace('.', '/', request()->controller()); $path = strtolower($controller . ($action && $action != 'index' ? '/' . $action : '')); } // 根据当前的URI自动匹配父节点的标题和备注 $data = Db::name('auth_rule')->where('name', $path)->field('title,remark')->find(); if ($data) { $title = __($data['title']); $content = __($data['remark']); } if (!$content) { return ''; } $result = '
    ' . $title . '' . $content . '
    '; if ($container) { $result = '
    ' . $result . '
    '; } return $result; } } if (!function_exists('build_suffix_image')) { /** * 生成文件后缀图片 * @param string $suffix 后缀 * @param null $background * @return string */ function build_suffix_image($suffix, $background = null) { $suffix = mb_substr(strtoupper($suffix), 0, 4); $total = unpack('L', hash('adler32', $suffix, true))[1]; $hue = $total % 360; list($r, $g, $b) = hsv2rgb($hue / 360, 0.3, 0.9); $background = $background ? $background : "rgb({$r},{$g},{$b})"; $icon = << {$suffix} EOT; return $icon; } }