*/ namespace generate\field; use generate\traits\Tools; class Field { use Tools; //当前字段可用规则 public static $rules = [ //非空 'required' => '非空', 'wechat' => '微信号', 'qq' => 'QQ号', 'account' => '账号', 'cn_name' => '中文姓名', 'car_number' => '车牌号', //自定义正则 'regular' => '自定义正则' ]; //列表名字 public static $listNameHtml = <<[FORM_NAME]\n EOF; //列表字段 public static $listFieldHtml = <<{\$item.[FIELD_NAME]}\n EOF; //列表关联筛选 public static $listSearchRelationHtml = << \n EOF; //列表自定义筛选数据 public static $listSearchSelectHtml = << \n EOF; //列表日期筛选 public static $listSearchDate = << \n EOF; //列表日期时间筛选 public static $listSearchDatatime = << \n EOF; //图片字段显示 public static $listImgHtml = <<\n EOF; public static $listMultiImgHtml = << {foreach name='item.[FIELD_NAME]' id='item_[FIELD_NAME]'} {/foreach} \n EOF; public static $listMultiFileHtml = << {foreach name='item.[FIELD_NAME]' id='item_[FIELD_NAME]'} 查看文件 {/foreach} EOF; //status字段获取器为switch的时候自动显示为field_name_text public static $listSwitchHtml = <<{\$item.[FIELD_NAME]_text}\n EOF; //验证器场景 public static $validateSceneCode = << [[RULE_FIELD]], 'edit' => [[RULE_FIELD]],\n EOF; //获取选择的字段和字段对应的验证optionDOM代码 public function getFormSelectOption($field_type) { $result = ['text', '']; $field_info = $this->getFieldInfo($file_name = '', $field_type); switch ($field_info['type']) { case 'tinyint': $result[0] = 'switch'; break; case 'smallint': $result[0] = 'number'; break; case 'mediumint': $result[0] = 'number'; break; case 'int': $result[0] = 'number'; break; case 'bigint': $result[0] = 'number'; break; case 'float': $result[0] = 'number'; break; case 'double': $result[0] = 'number'; break; case 'decimal': $result[0] = 'number'; break; case 'char': $result[0] = 'text'; break; case 'varchar': $result[0] = 'text'; break; case 'tinytext': $result[0] = 'editor'; break; case 'tinyblob': $result[0] = 'editor'; break; case 'text': $result[0] = 'editor'; break; case 'blob': $result[0] = 'editor'; break; case 'longtext': $result[0] = 'editor'; break; case 'longblob': $result[0] = 'editor'; break; case 'date': $result[0] = 'date'; break; case 'datetime': $result[0] = 'datetime'; break; case 'timestamp': $result[0] = 'datetime'; break; case 'time': $result[0] = 'time'; break; case 'year': $result[0] = 'year'; break; default: $result[0] = 'text'; break; } $result[1] = $this->getValidateOption($result[0], $field_info['length']); return $result; } //根据表单类型和长度返回相应的验证 public function getValidateOption($type, $length = '') { switch ($type) { case 'text': $data = Text::rule($length); break; case 'number': $data = Number::rule($length); break; case 'password': $data = Password::rule($length); break; case 'mobile': $data = Mobile::rule($length); break; case 'email': $data = Email::rule($length); break; case 'id_card': $data = IdCard::rule($length); break; case 'url': $data = Url::rule($length); break; case 'ip': $data = Ip::rule($length); break; case 'texterea': $data = Textarea::rule($length); break; case 'checkbox': $data = Checkbox::rule($length); break; case 'switch': $data = SwitchField::rule($length); break; case 'radio': $data = Radio::rule($length); break; case 'select': $data = Select::rule($length); break; case 'multi_select': $data = MultiSelect::rule($length); break; case 'image': $data = Image::rule($length); break; case 'multi_image': $data = MultiImage::rule($length); break; case 'file': $data = File::rule($length); break; case 'multi_file': $data = MultiFile::rule($length); break; case 'date': $data = Date::rule($length); break; case 'date_range': $data = DateRange::rule($length); break; case 'datetime': $data = Datetime::rule($length); break; case 'datetime_range': $data = DatetimeRange::rule($length); break; case 'year': $data = Year::rule($length); break; case 'year_range': $data = YearRange::rule($length); break; case 'year_month': $data = YearMonth::rule($length); break; case 'year_month_range': $data = YearMonthRange::rule($length); break; case 'map': $data = Map::rule($length); break; case 'color': $data = Color::rule($length); break; case 'icon': $data = Icon::rule($length); break; case 'editor': $data = Editor::rule($length); break; default: $data = Text::rule($length); break; } return $data; } //规则 public static function rule($length = '') { $html = ''; $rules = static::$rules; foreach ($rules as $key => $value) { $key = str_replace('[LENGTH]', $length, $key); $html .= ''; } return $html; } public static function createHtmlRule($rule) { $html = ''; if (key_exists($rule, self::$rules)) { $html .= ''; } } }