[TOC]
## 表單賦值
如果你希望在添加的時候給某些字段設置默認值。
### 基本方法
~~~
$this->setFormValue('date', date('Y-m-d'));
$this->setFormValue('title', '我是標題');
// $this->setFormValue('字段名', '值');
~~~
### get參數賦值
比如一個添加的url地址:`http://www.woo.com/run/Test/create.html?title=aa`

title字段自動賦值為你指定的了
父模型id的參數名統一為:`parent_id`,系統會自動識別
### 自動賦值
除了上面的get參數會對指定字段自動賦值意外,系統還會對下面字段自動賦值:
`admin_id`:自動賦值為當前后臺登錄者的用戶id,該字段表示后臺發布者
`is_verify`:自動賦值為系統配置中的`admin_default_verify`配置項值,該字段表示審核字段
`list_order`:默認自動增長,該字段用于排序
## 動態表單
我希望某個字段添加和修改的時候表單類型不一樣,怎么辦?
~~~
public function create()
{
// 模型的form 就是一個數組 如果僅希望在添加的時候才發生的變化,這里對變化進行動態賦值就是了
// 如:添加的時候把字段關閉了
$this->mdl->form['title']['elem'] = 0;
return call_user_func(['parent', __FUNCTION__]);
}
~~~
## 自定義表單布局回調
~~~
protected function setFormGrid()
{
// $this->formPage 就是FormPage構建器的實例
// 自行創建表單分組 必須定義一個叫basic的分組
$this->formPage->setTab('gaoji', '高級信息');
$this->formPage->setTab('basic', '基本信息');
// 給指定tab組下添加柵格
//通過setGrid(string 柵格標識符, string 柵格標題, int 柵格占用格數, array [分配到該柵格下的字段列表,數組的順序就是字段輸出的順序], string layui圖標 默認無) 添加一個柵格
// 沒有分配的字段都自動加入到basic組下的第一個柵格中
$this->formPage->switchTab('basic')->setGrid('a', '', 8, ['a'])
->setGrid('b', '統計信息', 4, ['b', 'c']);
// gaoji組下如果不分柵格,就直接setTabItems給該組分配字段
//$form->switchTab('gaoji')->setTabItems(['d', 'e', 'f', 'g']);
$this->formPage->switchTab('gaoji')->setGrid('c', '', 6, ['d','e'])
->setGrid('d', '標題', 6, ['f', 'g']);
// 甚至更復雜的表單布局
// 可以參考 Model,Field,cms.Document等有自定義布局
// 這個時候表單項都已經創建好了
//pr($this->formPage->collection);// 查看當前有哪些表單項
$this->formPage->removeFormItem('title');// 刪除表單項
}
~~~
通過可以`setFormGrid`回調自己寫自定義表單布局的代碼,對應有復雜(自定義)布局的需求;這個時候所有表單項已經自動創建好了。
更多自定義布局,請參考文檔:[http://www.hmoore.net/laowu199/e_dev/2058092](http://www.hmoore.net/laowu199/e_dev/2058092);文檔中的的`$form`在這里換成`$this->formPage`。
其實還有幾個回調,但感覺這一個就夠了,其他幾個就不做介紹了。有興趣了解的可以看AdminController的create方法源碼。
## 自定義模板文件
所有新增操作使用的是同一個模板文件`woo\admin\view\form.html`。
如果你希望當前新增操作自定義一個模板文件,可以在應用的下的view試圖目錄中以當前控制器的“小寫+下劃線”創建一個目錄,在該目錄下創建"form.html";然后把默認的表單模板內容復制過來就完成了自定義模板文件的需求。
~~~
{extend name="$extend_form"/}
{block name="script"}
<script>
</script>
{/block}
~~~
如果你不希望自定義的文件名叫"form.html",你可以:
~~~
public function create()
{
$this->local['fetch'] = 'create';
return call_user_func(['parent', __FUNCTION__]);
}
~~~
## 其他的可配置的
~~~
$this->local['header_title'] = '自定義標題'; // 默認是“xxx新增”
$this->local['return_list_url'] = (string) url('xxx'); // 自定義返回列表的鏈接 同時也是 添加成功以后 返回的鏈接
~~~
- 2.0開發手冊
- 基礎
- 簡介
- 安裝
- 目錄
- 規范(必看)
- 快速開發
- 創建模型
- 字段管理
- 無限級開發
- 模型Model
- 定義
- 方法
- 事件
- 關聯
- 關聯查詢
- 驗證
- 后臺控制器Controller
- 定義
- 列表【index】
- 新增【create】
- 修改【modify】
- 刪除【delete】
- 詳細【detail】
- 文本審核【antispam】
- 清空數據【clearData】
- 自定義頁面
- 視圖View
- 視圖使用
- 引入CSS和JS
- 基礎表單構建Form
- 布局表單構建FormPage
- 表單構建器的基礎使用
- 表單項
- 表單分組
- 表單觸發器
- 表單布局
- 數據提交驗證和入庫
- 集成tinymce編輯器
- 集成nkeditor編輯器
- 表格構建Table
- 表格構建器基礎使用
- 表格構建器列表字段相關
- 自定義列表頭部工具按鈕
- 自定義列表項工具按鈕
- 自定義搜索
- 定義列表側邊欄
- 靜態數據
- 更多屬性和回調
- 自定義模板V2.1.0
- 列表統計輸出V2.1.2
- 常見問題
- 自定義應用
- 創建新應用
- 應用開發
- API應用
- 自定義插件
- 創建新插件
- 雜項
- 認證Auth
- 權限管理
- 上傳Upload
- 批量導入
- 助手庫
- 系統配置
- 字典
- 二維碼生成
- 源碼修改
- 常見問題
- 小技巧,小細節
- 插件
- oauth
- APP一鍵登錄
- 微信小程序登錄
- 2.0CMS建站
- 基礎
- 安裝
- 建站
- Callback
- 引入CSS和JS
- 模板
- 欄目數據
- 列表頁數據
- 詳細頁數據
- 欄目封面
- 自定義表單
- 其他數據和自定義數據
- wap視圖層
- 前臺搜索
- API開發
- CMS應用日志
- CMS升級指導
- 中臺-SAAS開發
- 安裝
- 中臺日志
- 中臺升級指導
- ★★2.0視頻教程★★
- 附錄
- Admin核心更新日志
- Admin核心升級指導
- composer
- 安全