## **动态表单**
* 动态表单组件是DaiCuo框架的核心之一,主要用途是动态生成表单组件做,需要搭配前面组件(表单)做UI展示提供给用户做输入处理。
* 动态表单组件以分层控制器的方式提供。
## **组件路径**
* ./apps/common/widget/Form.php
## **组件模板**
* ./apps/common/view/daicuo_form.tpl
## **组件方法**
* \app\common\widget\Form::build
## **组件钩子**
* form_build_before
## **三种调用方式**
以下三个方式根据个人喜欢都可以完成表单的动态生成,推荐使用 DcBuildForm 助手函数。
```
public function index()
{
\app\common\widget\Form::build($params);//标准方式调用
DcBuildForm($params);//助手函数方式调用
widget('common/Form/build', ['params' =>$params]);//TP函数方式调用
}
```
## **助手函数**
* DcBuildForm 快速生成表单元素
* DcFormItems 快速生成适用于框架的表单元素格式列表
* DcFormItem 快速生成一条适用于框架的表单元素格式
#### **DcBuildForm定义**
快速生成表单元素
| 版本 | 描述 |
| --- | --- |
| 1.0.0 | 首次引入 |
#### **用法**
```
DcBuildForm($form)
```
#### **参数**
#### $form
类型:array
描述:必需;表单元素属性列表
* $name-string-必需-form标签的name属性,可通过此参数搭配钩子处理系统预设的表单-默认:text
* $class-string-可选-form标签的class属性-默认:row
* $action-string-可选-form标签的action属性-默认:空
* $method-string-可选-form标签的method属性-默认:post
* $disabled-bool-可选-form标签的disabled属性-默认:false
* $ajax-bool-可选-是否采用AJAX模式提交表单-默认:true
* $callback-string-可选-AJAX模式时提交后回调函数-默认:空
* $submit-string-可选-提交按钮文字,留空不显示-默认:提交
* $reset-string-可选-重置按钮文字,留空不显示-默认:重置
* $close-string-可选-关闭按文字,留空不显示,主要用于ajax浮动窗口-默认:字段标题
* $items-string-可选-表单元素列表,参考DcFormItems参数-默认:空
#### **返回值**
* array(框架表单元素属性专用格式)
*****
#### **DcFormItems定义**
快速生成适用于框架的表单元素格式列表
| 版本 | 描述 |
| --- | --- |
| 1.6.0 | 首次引入 |
#### **用法**
```
DcFormItems($field, $items)
```
#### **参数**
#### $field
类型:string
描述:必需;表单字段名;默认:空
#### $items
类型:array
描述:必需;多维数组,键名为字段,键值参考DcFormItem参数列表;默认:空
#### **返回值**
* array(框架表单元素属性专用格式)
*****
#### **DcFormItem定义**
快速生成一条适用于框架的表单元素格式
| 版本 | 描述 |
| --- | --- |
| 1.6.0 | 首次引入 |
#### **用法**
```
DcFormItem($field, $form)
```
#### **参数**
#### $field
类型:string
描述:必需;表单字段名;默认:空
#### $form
类型:array
描述:必需;表单元素属性列表
* $type-string-必需-input类型(html|hidden|type|url|email|number|password|image|file|datetime|textarea|editor|json|custom|select|switch|radio|checkbox)-默认:text
* $html-string-可选-自定义html标签-默认:空
* $hidden-string-可选-hidden属性-默认:空
* $name-string-可选-name属性-默认:表单字段名
* $id-string-可选-id属性-默认:表单字段名
* $value-string-可选-value属性-默认:空
* $title-string-可选-title属性-默认:字段标题
* $placeholder-string-可选-placeholder属性-默认:字段描述
* $tips-string-可选-表单元素提示-默认:空
* $autofocus-string-可选-自动获取焦点属性-默认:空
* $readonly-string-可选-readonly属性-默认:false
* $disabled-string-可选-disabled属性-默认:false
* $required-string-可选-required属性-默认:false
* $option-string-可选-option属性,有效范围(select|suctom|switch|radio|checkbox)-默认:空
* $rows-string-可选-rows属性,有效范围(textarea|json|editor)-默认:10
* $class-string-可选-表单外层class属性-默认:row
* $class_left-string-可选-表单元素左侧class属性-默认:col-12
* $class_right-string-可选-表单元素右侧class属性-默认:col-12
* $class_right_controll-string-可选-表单元素右侧input标签class属性-默认:'form-control
* $class_right_label-string-可选-表单元素右侧label标签class属性,有效范围(switch|radio|checkbox)-默认:'form-check-la'
* $class_tips-string-可选-表单提示信息class属性-默认:'form-text
#### **返回值**
* array(框架表单元素属性专用格式)
*****