[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`
![](https://img.kancloud.cn/35/2b/352b80d25b115cace459f1faff44b21d_358x114.png)
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`回调自己写自定义表单布局的代码,对应有复杂(自定义)布局的需求;这个时候所有表单项已经自动创建好了。
更多自定义布局,请参考文档:[https://www.kancloud.cn/laowu199/e_dev/2058092](https://www.kancloud.cn/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
- 安全