$menu]))) return self::setErrorInfo('字段名称错误'); if ($config_one['type'] == 'radio' || $config_one['type'] == 'checkbox') { $parameter = array(); $option = array(); $parameter = explode(',', $config_one['parameter']); foreach ($parameter as $k => $v) { if (isset($v) && !empty($v)) { $option[$k] = explode('-', $v); } } $value_arr = array();//选项的值 foreach ($option as $k => $v) { foreach ($v as $kk => $vv) if (!$kk) { $value_arr[$k] = $vv; } } $i = 0; if (is_array($value)) { foreach ($value as $value_v) { if (in_array($value_v, $value_arr)) { $i++; } } if (count($value) != $i) return self::setErrorInfo('输入的值不属于选项中的参数'); } else { if (in_array($value, $value_arr)) { $i++; } if (!$i) return self::setErrorInfo('输入的值不属于选项中的参数'); } if ($config_one['type'] == 'radio' && is_array($value)) return self::setErrorInfo('单选按钮的值是字符串不是数组'); } $bool = self::edit(['value' => json_encode($value)], $menu, 'menu_name'); return $bool; } /** * 获取单个参数配置 * */ public static function getValue($menu) { if (empty($menu) || !($config_one = self::get(['menu_name' => $menu]))) return false; return json_decode($config_one['value'], true); } /** * 获取所有配置分类 * @param int $type * @return array */ public static function getConfigChildrenTabAll($pid = 0) { $configAll = SystemConfigTab::getChildrenTab($pid); $config_tab = []; foreach ($configAll as $k => $v) { if (!$v['info']) { $config_tab[$k]['id'] = $v['id']; $config_tab[$k]['label'] = $v['title']; $config_tab[$k]['icon'] = $v['icon']; $config_tab[$k]['type'] = $v['type']; } } return $config_tab; } /** * 获得多个参数 * @param $menus * @return array */ public static function getMore($menus) { $menus = is_array($menus) ? implode(',', $menus) : $menus; $list = self::where('menu_name', 'IN', $menus)->column('value', 'menu_name') ?: []; foreach ($list as $menu => $value) { $value = json_decode($value, true); $list[$menu] = is_array($value) && $value[0] ? $value[0] : $value; } return $list; } public static function getAllConfig() { $list = self::column('value', 'menu_name') ?: []; foreach ($list as $menu => $value) { $list[$menu] = json_decode($value, true); } return $list; } /** * text 判断 * */ public static function valiDateTextRole($data) { if (!$data['width']) return self::setErrorInfo('请输入文本框的宽度'); if ($data['width'] <= 0) return self::setErrorInfo('请输入正确的文本框的宽度'); return true; } /** * radio 和 checkbox规则的判断 * */ public static function valiDateRadioAndCheckbox($data) { $parameter = array(); $option = array(); $option_new = array(); $data['parameter'] = str_replace("\r\n", "\n", $data['parameter']);//防止不兼容 $parameter = explode("\n", $data['parameter']); if (count($parameter) < 2) return self::setErrorInfo('请输入正确格式的配置参数'); foreach ($parameter as $k => $v) { if (isset($v) && !empty($v)) { $option[$k] = explode('=', $v); } } if (count($option) < 2) return self::setErrorInfo('请输入正确格式的配置参数'); $bool = 1; foreach ($option as $k => $v) { $option_new[$k] = $option[$k][0]; foreach ($v as $kk => $vv) { $vv_num = strlen($vv); if (!$vv_num) { $bool = 0; } } } if (!$bool) return self::setErrorInfo('请输入正确格式的配置参数'); $num1 = count($option_new);//提取该数组的数目 $arr2 = array_unique($option_new);//合并相同的元素 $num2 = count($arr2);//提取合并后数组个数 if ($num1 > $num2) return self::setErrorInfo('请输入正确格式的配置参数'); return true; } /** * textarea 判断 * */ public static function valiDateTextareaRole($data) { if (!$data['width']) return self::setErrorInfo('请输入多行文本框的宽度'); if (!$data['high']) return self::setErrorInfo('请输入多行文本框的高度'); if ($data['width'] < 0) return self::setErrorInfo('请输入正确的多行文本框的宽度'); if ($data['high'] < 0) return self::setErrorInfo('请输入正确的多行文本框的宽度'); return true; } /** * 获取一数据 * */ public static function getOneConfig($filed, $value) { $where[$filed] = $value; return self::where($where)->find(); } /** * 获取配置分类 * */ public static function getAll($id) { $where['config_tab_id'] = $id; $where['status'] = 1; return self::where($where)->order('sort desc,id asc')->select(); } /** * 获取所有配置分类 * @param int $type * @return array */ public static function getConfigTabAll($type = 0) { $configAll = SystemConfigTab::getAll($type); $config_tab = []; foreach ($configAll as $k => $v) { if (!$v['info']) { $config_tab[$k]['value'] = $v['id']; $config_tab[$k]['label'] = $v['title']; $config_tab[$k]['icon'] = $v['icon']; $config_tab[$k]['type'] = $v['type']; } } return $config_tab; } /** * 选择类型 * */ public static function radiotype($type = 'text') { return [ ['value' => 'text', 'label' => '文本框', 'disabled' => 1] , ['value' => 'textarea', 'label' => '多行文本框', 'disabled' => 1] , ['value' => 'radio', 'label' => '单选按钮', 'disabled' => 1] , ['value' => 'upload', 'label' => '文件上传', 'disabled' => 1] , ['value' => 'checkbox', 'label' => '多选按钮', 'disabled' => 1] ]; } /** * 文本框 * */ public static function createInputRule($tab_id) { $formbuider = array(); $formbuider[] = Form::radio('type', '类型', 'text')->options(self::radiotype()); $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfig::getConfigTabAll(-1)); $formbuider[] = Form::input('info', '配置名称')->autofocus(1); $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url'); $formbuider[] = Form::input('desc', '配置简介'); $formbuider[] = Form::input('value', '默认值'); $formbuider[] = Form::number('width', '文本框宽(%)', 100); $formbuider[] = Form::input('required', '验证规则')->placeholder('多个请用,隔开例如:required:true,url:true'); $formbuider[] = Form::number('sort', '排序'); $formbuider[] = Form::radio('status', '状态', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]); return $formbuider; } /** * 多行文本框 * */ public static function createTextAreaRule($tab_id) { $formbuider = array(); $formbuider[] = Form::radio('type', '类型', 'textarea')->options(self::radiotype()); $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfig::getConfigTabAll(-1)); $formbuider[] = Form::input('info', '配置名称')->autofocus(1); $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url'); $formbuider[] = Form::input('desc', '配置简介'); $formbuider[] = Form::textarea('value', '默认值'); $formbuider[] = Form::number('width', '文本框宽(%)', 100); $formbuider[] = Form::number('high', '多行文本框高(%)', 5); $formbuider[] = Form::number('sort', '排序'); $formbuider[] = Form::radio('status', '状态', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]); return $formbuider; } /** * 单选按钮 * */ public static function createRadioRule($tab_id) { $formbuider = array(); $formbuider[] = Form::radio('type', '类型', 'radio')->options(self::radiotype()); $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfig::getConfigTabAll(-1)); $formbuider[] = Form::input('info', '配置名称')->autofocus(1); $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url'); $formbuider[] = Form::input('desc', '配置简介'); $formbuider[] = Form::textarea('parameter', '配置参数')->placeholder("参数方式例如:\n1=男\n2=女\n3=保密"); $formbuider[] = Form::input('value', '默认值'); $formbuider[] = Form::number('sort', '排序'); $formbuider[] = Form::radio('status', '状态', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]); return $formbuider; } /** * 文件上传 * */ public static function createUploadRule($tab_id) { $formbuider = array(); $formbuider[] = Form::radio('type', '类型', 'upload')->options(self::radiotype()); $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfig::getConfigTabAll(-1)); $formbuider[] = Form::input('info', '配置名称')->autofocus(1); $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url'); $formbuider[] = Form::input('desc', '配置简介'); $formbuider[] = Form::radio('upload_type', '上传类型', 1)->options([['value' => 1, 'label' => '单图'], ['value' => 2, 'label' => '多图'], ['value' => 3, 'label' => '文件']]); $formbuider[] = Form::number('sort', '排序'); $formbuider[] = Form::radio('status', '状态', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]); return $formbuider; } /** * 多选框 * */ public static function createCheckboxRule($tab_id) { $formbuider = array(); $formbuider[] = Form::radio('type', '类型', 'checkbox')->options(self::radiotype()); $formbuider[] = Form::select('config_tab_id', '分类', $tab_id)->setOptions(SystemConfig::getConfigTabAll(-1)); $formbuider[] = Form::input('info', '配置名称')->autofocus(1); $formbuider[] = Form::input('menu_name', '字段变量')->placeholder('例如:site_url'); $formbuider[] = Form::input('desc', '配置简介'); $formbuider[] = Form::textarea('parameter', '配置参数')->placeholder("参数方式例如:\n1=白色\n2=红色\n3=黑色"); $formbuider[] = Form::input('value', '默认值'); $formbuider[] = Form::number('sort', '排序'); $formbuider[] = Form::radio('status', '状态', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]); return $formbuider; } /** * 插入数据到数据库 * */ public static function set($data) { return self::create($data); } }