多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # [**表单构建器**](https://www.kancloud.cn/ruoshuiyx/siyucms/1175202) 构建表单时我们有时候会向斗个表单添加额外的信息比如属性或者类等 ``` $model = '\app\common\model\\' . $this->modelName; $info = $model::edit($id)->toArray();//获得由字段名为键字段值为值组成的一维数组 // 获取【添加页面】可展示的字段信息 $columns = MakeBuilder::getAddColumns($this->tableName, $info); //然后遍历出每个字段进行操作 /** //通用去掉的字段 protected $ty_field=[ 'status', 'sort', 'create_time', 'update_time' ]; **/ foreach ($columns as $key=>&$v){ //通用去掉的字段 if( in_array($v[1],$this->ty_field)){ unset($columns[$key]); } /*排除某个下拉框*/ if(isset($v[6]) && $v[1] !='open_tenders_result'){ //存在下标6且 //多行文本框textarea、标签tag、密码框password、单图片上传image、多图片上传images、单文件上传file、多文件上传files、取色器color 为5 //数字输入框number、多级联动linkage 8 //隐藏表单项hidden 3 if($v[0]=='textarea'){ $v[5] = $v[5]==''?'readonly = "readonly"':''; }else{ $v[6] = $v[6]=='' ?' readonly = "readonly" ':''; } } //向表单添加只读属性 switch ($v[0]) { //额外属性在$v[3] case 'hidden': case 'button': # code... break; //额外属性在$v[5] case 'textarea': case 'tag': case 'password': case 'image': case 'images': case 'file': case 'files': case 'color': $v[5] = $v[5]==''?'readonly = "readonly"':''; break; //额外属性在$v[6] case 'text': case 'radio': case 'checkbox': case 'date': case 'time': case 'datetime': case 'daterange': case 'select': case 'select2': case 'editor': $v[6] = $v[6]=='' ?' readonly = "readonly" ':''; break; //额外属性在$v[8] case 'number': case 'linkage': $v8] = $v[8]=='' ?' readonly = "readonly" ':''; break; default: # code... break; } } ``` ## **单行文本** addText($name = '', $title = '', $tips = '', $default = '', $group = [], $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) | 参数 | 含义 | 类型 | 必填 | | --- | --- | --- | --- | | name | 字段名称(英文) | string | 是 | | title | 字段别名(中文) | string | 是 | | tips | 提示信息 | string | 否 | | default | 默认值 | string | 否 | | group | 标签组 | array | 否 | | extra\_attr | 额外属性 | string | 否 | | extra\_class | 额外css类 | string | 否 | | placeholder | 占位符 | string | 否 | | required | 是否必填 | bool | 否 | ``` ->addText( 'signName', '签名名称', '<a href="https://help.aliyun.com/document_detail/108072.html" target="_blank">【签名简介】</a><a href="https://dysms.console.aliyun.com/dysms.htm#/domestic/text/sign" target="_blank">【查看签名】</a>' ) ``` ![](https://img.kancloud.cn/da/ff/daff513b74bd1d5400e63c4598bf3205_727x36.png) ## **tab页由字段分组决定** 新建模型【单页测试】单页模式选项改选为【是】,然后在【字段分组】页面添加将属于【单页测试】模块的分组1和分组2 然后在【字段管理】页添加两个字段name、title,在【所属分组】项分别将两个字段放入的分组1和分组2 ![](https://img.kancloud.cn/41/71/417100a3257abca5655e44a8b1bb1f46_781x279.png) ## **fetch** FormBuilder::fetch() 分配变量和渲染模板 ``` View::assign($this->_vars); return View::fetch($this->_template); ``` ## **多行文本** addTextarea($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false, $rows = 3) | 参数 | 含义 | 类型 | 必填 | 版本 | | --- | --- | --- | --- | --- | | name | 字段名称(英文) | string | 是 | | | title | 字段别名(中文) | string | 是 | | | tips | 提示信息 | string | 否 | | | default | 默认值 | string | 否 | | | extra\_attr | 额外属性 | string | 否 | | | extra\_class | 额外css类 | string | 否 | | | placeholder | 占位符 | string | 否 | | | required | 是否必填 | bool | 否 | | | rows | 高度(行数) | string | 否 | V6.1.6 | 多行文本框一般只需要两个参数(name, title),其他项目均为选填项。 ## addDate 等时间组件都是[daterangepicker](www.daterangepicker.cn)封装出来的 ~~~ return FormBuilder::getInstance() ->addTextarea('remarks', '备注') ~~~ ![](https://img.kancloud.cn/42/f5/42f54df173f49be8aea4d876e8691064_639x149.png) ``` /** * 获取句柄 * @return FormBuilder */ public static function getInstance() { if (is_null(self::$instance)) { self::$instance = new self(); } return self::$instance; } /** * 渲染模版 * @param string $template 模板文件名或者内容 * @return string * @throws \Exception */ public function fetch(string $template = '') /** * 设置页面标题 * @param string $title 页面标题 * @return $this */ public function setPageTitle(string $title = '') /** * 设置表单页提示信息 * @param string $tips 提示信息 * @param string $type 提示类型:danger,info,warning,success * @param string $pos 提示位置:top,search,bottom * @return $this */ public function setPageTips(string $tips = '', string $type = 'info', string $pos = 'top') /** * 隐藏<显示全部>按钮 * @param string $url 链接地址 * @return $this */ public function hideShowAll() /** * 设置表单提交地址 * @param string $form_url 提交地址 * @return $this */ public function setFormUrl(string $form_url = '') /** * 设置表单提交方式 * @param string $value 提交方式 * @return $this */ public function setFormMethod(string $value = '') /** * 模板变量赋值 * @param mixed $name 要显示的模板变量 * @param string $value 变量的值 * @return $this */ public function assign($name, $value = '') /** * 隐藏按钮 * @param array|string $btn 要隐藏的按钮,如:['submit'],其中'submit'->确认按钮,'back'->返回按钮 * @return $this */ public function hideBtn($btn = []) /** * 设置按钮标题 * @param string|array $btn 按钮名 'submit' -> “提交”,'back' -> “返回” * @param string $title 按钮标题 * @return $this */ public function setBtnTitle($btn = '', string $title = '') /** * 添加额外按钮 * @param string $btn 按钮内容 * @return $this */ public function addBtn(string $btn = '') /** * 设置额外HTML代码 * @param string $extra_html 额外HTML代码 * @param string $pos 位置 [top和bottom] * @return $this */ public function setExtraHtml(string $extra_html = '', string $pos = '') /** * 设置额外JS代码 * @param string $extra_js 额外JS代码 * @return $this */ public function setExtraJs(string $extra_js = '') /** * 设置额外CSS代码 * @param string $extra_css 额外CSS代码 * @return $this */ public function setExtraCss(string $extra_css = '') /** * 设置提交表单时显示确认框 * @return $this */ public function submitConfirm() /** * 添加单行文本框 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param array $group 标签组,可以在文本框前后添加按钮或者文字 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addText($name = '', $title = '', $tips = '', $default = '', $group = [], $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加多行文本框 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @param int $rows 高度(以行数计) * @return $this|array */ public function addTextarea($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false, $rows = 3) /** * 添加单选 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param array $options 单选数据 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param bool $required 是否必选 * @return $this|array */ public function addRadio($name = '', $title = '', $tips = '', $options = [], $default = '', $extra_attr = '', $extra_class = '', $required = false) /** * 添加复选框 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param array $options 复选框数据 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param bool $required 是否必选 * @return $this|array */ public function addCheckbox($name = '', $title = '', $tips = '', $options = [], $default = '', $extra_attr = '', $extra_class = '', $required = false) /** * 添加日期 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $format 日期格式 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addDate($name = '', $title = '', $tips = '', $default = '', $format = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加时间 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $format 时间格式 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addTime($name = '', $title = '', $tips = '', $default = '', $format = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加日期时间 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $format 日期格式 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addDatetime($name = '', $title = '', $tips = '', $default = '', $format = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加日期范围 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $format 日期格式 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param bool $required 是否必填 * @return $this|array */ public function addDaterange($name = '', $title = '', $tips = '', $default = '', $format = '', $extra_attr = '', $extra_class = '', $required = false) /** * 添加标签 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param bool $required 是否必填 * @return $this|array */ public function addTag($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $required = false) /** * 添加数字输入框 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $min 最小值 * @param string $max 最大值 * @param string $step 步进值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类 * @param bool $required 是否必填 * @return $this|array */ public function addNumber($name = '', $title = '', $tips = '', $default = '', $min = '', $max = '', $step = '', $extra_attr = '', $extra_class = '', $required = false) /** * 添加密码框 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addPassword($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加普通下拉菜单 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param array $options 选项 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类 * @param string $placeholder 占位符 * @param bool $required 是否必选 * @return $this|array */ public function addSelect($name = '', $title = '', $tips = '', $options = [], $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加下拉菜单select2 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param array $options 选项 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @param string $ajax_url ajax 地址(传递时无需再传递选项值) * @return $this|array */ public function addSelect2($name = '', $title = '', $tips = '', $options = [], $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false, $ajax_url = '') /** * 添加单图片上传 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addImage($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加多图片上传 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addImages($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加单文件上传 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addFile($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加多文件上传 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addFiles($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加编辑器 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $height 高度 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param bool $required 是否必填 * @return $this|array */ public function addEditor($name = '', $title = '', $tips = '', $default = '', $height = '', $extra_attr = '', $extra_class = '', $required = false) /** * 添加按钮 * @param string $name 按钮名称(id) * @param string $title 字段别名 * @param array $attr 按钮属性 * @param string $elemtype 按钮类型,默认为button,也可以为a标签 * @return $this|array */ public function addButton($name = '', $title = '', $attr = [], $elemtype = 'button') /** * 添加隐藏表单项 * @param string $name 字段名称 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @return $this|array */ public function addHidden($name = '', $default = '', $extra_attr = '', $extra_class = '') /** * 添加取色器 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @return $this|array */ public function addColor($name = '', $title = '', $tips = '', $default = '', $extra_attr = '', $extra_class = '', $placeholder = '', $required = false) /** * 添加代码编辑器 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $default 默认值 * @param string $height 高度 * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类名 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @param string $mode 编程语言(htmlmixed/javascript/css) * @param string $theme 主题 * @return $this|array */ public function addCode($name = '', $title = '', $tips = '', $default = '', $height = '', $extra_attr = '', $extra_class = '', $required = false, $mode = 'htmlmixed', $theme = 'monokai') /** * 添加自定义Html * @param string $html html代码 * @return $this|array */ public function addHtml($html = '') /** * 添加多级联动 * @param string $name 字段名称 * @param string $title 字段别名 * @param string $tips 提示信息 * @param string $model 模型名称 * @param string $level 级别 * @param string $default 默认值 * @param array|string $fields 字段名,默认为id,name,pid * @param string $extra_attr 额外属性 * @param string $extra_class 额外css类 * @param string $placeholder 占位符 * @param bool $required 是否必填 * @param string $ajax_url ajax 地址 * @return $this|array */ public function addLinkage($name = '', $title = '', $tips = '', $model = '', $level = 2, $default = '', $fields = [], $extra_attr = '', $extra_class = '', $placeholder = '', $required = false, $ajax_url = '') /** * 添加表单项 [别名方法] * @param string $type 表单项类型 * @param string $name 表单项名,与各自方法中的参数一致 * @return $this */ public function addFormItem($type = '', $name = '') /** * 一次性添加多个表单项 * @param array $items 表单项 * @return $this|array */ public function addFormItems($items = []) /*** * 设置表单项的值 */ private function setFormValue() /** * 添加分组 * @param array $groups 分组数据 * @return mixed */ public function addGroup($groups = []) ```