php加按钮,自动添加按钮

## autoAdd('表单项' \[, '表名', '验证器名', '自动插入时间戳', '时间格式', '是否弹窗'\])

| 版本 | 功能 |

| --- | --- |

| 1.0.5 | 支持弹窗 |

如果用`addTopButton('add')`来添加”新增“按钮,那么新增的方法需要自己实现,也就是在当前控制器下,新建一个add方法来创建表单,并且写入数据。

追求极简的开发是**DolphinPHP**的核心思想之一,为了节省开发者的宝贵时间,我们为大家准备了一个神奇的方法,可以让开发者无需编写add方法也能实现创建表单和写入数据。

~~~

// 读取用户数据

$data_list = Db::name('admin_user')->select();

// 定义新增页面的字段

$fields = [

['text', 'username', '用户名', '必填,可由英文字母、数字组成'],

['text', 'nickname', '昵称', '可以是中文'],

['select', 'role', '角色', '', RoleModel::getTree(null, false)],

['text', 'email', '邮箱', ''],

['password', 'password', '密码', '必填,6-20位'],

['text', 'mobile', '手机号'],

['image', 'avatar', '头像'],

['radio', 'status', '状态', '', ['禁用', '启用'], 1]

];

// 使用ZBuilder构建数据表格

return ZBuilder::make('table')

->addColumn('id', 'ID')

->addColumn('username', '用户名')

->addColumn('nickname', '昵称')

->addColumn('email', '邮箱')

->addColumn('mobile', '手机号')

->addColumn('create_time', '创建时间')

->addColumn('right_button', '操作', 'btn')

->autoAdd($fields) // 添加新增按钮

->setRowList($data_list) // 设置表格数据

->fetch();

~~~

就这么简单,点击页面上的”新增“按钮,就添加数据了。

### 表单项

表单项是一个数组,每个元素表示一个字段数据,具体用法可以参考[添加表单项通用方法](https://www.kancloud.cn/ming5112/dolphinphp/256345)。

### 表名

如果你的数据表名是`当前模块名_当前控制器名`,那么无需填写这个参数。假如不是,那么需要填写对应的表名,比如:

~~~

->autoAdd($fields, 'admin_user')

~~~

### 验证器名

如果新增数据的时候,需要用到验证器,那么可以填写验证器名,如果不需要用到验证器,那么可以不写或者填写空值。

默认情况下,填写`true`的话,系统会去使用验证器名为**当前控制器名**的验证器。比如当前控制器是Index,那么就会去调用Index验证器。

~~~

->autoAdd($fields, 'admin_user', true)

~~~

如果不填写,那么提交表单的时候,则不会验证数据,而是直接写入数据。

也可以指定验证器名

~~~

->autoAdd($fields, 'admin_user', 'User')

~~~

### 自动插入时间戳

如果新增数据的时候想自动插入创建时间和更新时间,那么可以这样写

~~~

->autoAdd($fields, 'admin_user', 'User', true)

~~~

提交表单的时候,DolphinPHP会自动添加当前**时间戳**到字段名为`create_time`和`update_time`的字段中。

> 前提是表中有这个两个字段。

如果只想写入其中一个字段,比如create\_time,那么可以这样写

~~~

->autoAdd($fields, 'admin_user', 'User', 'create_time')

~~~

或者干脆两个都指明

~~~

->autoAdd($fields, 'admin_user', 'User', 'create_time,update_time')

~~~

如果表中的时间字段不是`create_tiem`而是其他,比如`create_at`,那么也可以直接写

~~~

->autoAdd($fields, 'admin_user', 'User', 'create_at')

~~~

当然,也可以利用表单项的`hidden`类型来添加,比如

~~~

// 定义新增页面的字段

$fields = [

['text', 'username', '用户名', '必填,可由英文字母、数字组成'],

['text', 'nickname', '昵称', '可以是中文'],

['select', 'role', '角色', '', RoleModel::getTree(null, false)],

['text', 'email', '邮箱', ''],

['password', 'password', '密码', '必填,6-20位'],

['text', 'mobile', '手机号'],

['image', 'avatar', '头像'],

['radio', 'status', '状态', '', ['禁用', '启用'], 1],

['hidden', 'create_time', $this->request->time()],

['hidden', 'update_time', $this->request->time()]

];

~~~

> 如果在添加数据前需要复杂处理的,建议自己创建add方法

### 自定义时间格式

从`1.0.3`版本开始,支持自定义时间字段的格式,默认为时间戳,如果想以普通时间格式存储的话,可以这样指定。

~~~

->autoAdd($fields, 'admin_user', 'User', true, 'Y-m-d')

~~~

那么添加数据的时候,会自动添加create\_time字段和update\_time字段,它们的格式为:`Y-m-d`.

或者单独对某个字段的格式进行指定。

~~~

->autoAdd($fields, 'admin_user', 'User', 'create_time|Y-m-d') // create_time字段写入的时间格式为Y-m-d

~~~

没有指定时间格式的字段,将默认为时间戳格式

~~~

->autoAdd($fields, 'admin_user', 'User', 'create_time|Y-m-d,update_time')

~~~

`create_time`字段写入的时间格式为`Y-m-d`,而`update_time`为时间戳。

如果指定了时间格式,那么没有明确指定格式的字段,将统一使用后面指定的格式。

~~~

->autoAdd($fields, 'admin_user', 'User', 'create_time|Y-m-d,update_time,log_time', 'Y/m/d H:i')

~~~

`create_time`字段写入的时间格式为`Y-m-d`,而`update_time`和`log_time`的格式为`Y/m/d H:i`。

### 是否弹窗

> 从1.0.5版本开始,支持设置为弹窗

~~~

->autoAdd($fields, 'admin_user', 'User', '', '', true)

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值