## **動態表單**
* 動態表單組件是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(框架表單元素屬性專用格式)
*****