php5from表单,u170352/tp5-form-builder: THINKPHP5 表单自动构建组件 - Gitinn

皇甫飞光
2023-12-01

// +----------------------------------------------------------------------

// | tp5-form-builder[请基于ThinkPHP5使用]

// +----------------------------------------------------------------------

// | Copyright (c) 2016-2019 http://www.lwwan.com

// +----------------------------------------------------------------------

// | Author 似水星辰 [ 2630481389@qq.com ]

// +----------------------------------------------------------------------

// | 星辰工作室 QQ群331378225

// +----------------------------------------------------------------------

namespace app\admin\controller;

use think\Controller;

use app\admin\model\Config as ConfigModel;

/**

* 控制器

* @package app\admin\controller

*/

class Config extends Controller

{

/**

* 新增表单项

* @author 似水星辰 [ 2630481389@qq.com ]

* @return mixed

*/

public function add()

{

$fields = [

[

'type' => 'radio',

'name' => 'group',

'title' => '配置分组',

'extra' => config('config_group'),

'value' => $group,

],

[

'type' => 'select',

'name' => 'type',

'title' => '配置类型',

'tips' => '',

'extra' => config('form_item_type')

],

[

'type' => 'text',

'name' => 'title',

'title' => '配置标题',

'attr' => 'data-rule="required;" data-msg-required="标题不能为空,可以使用中文或者英文"'

],

[

'type' => 'text',

'name' => 'name',

'title' => '配置标识',

'attr' => 'data-rule="required;name;" data-rule-name="[/^[a-zA-Z][a-zA-Z0-9_]*$/, \'请输入正确的配置标识,只能使用英文和下划线,必须以英文字母开头\']" data-msg-required="配置标识不能为空"'

],

['type' => 'textarea', 'name' => 'value', 'title' => '配置值'],

['type' => 'textarea', 'name' => 'extra', 'title' => '配置项', 'tips' => '用于单选、多选、下拉、联动等类型'],

['type' => 'textarea', 'name' => 'tips', 'title' => '配置说明'],

['type' => 'radio', 'name' => 'status', 'title' => '状态', '', 'extra' => ['禁用', '启用'], 'value' => 1]

];

$this->assign('page_title', '新增管理员');

$this->assign('form_items', $fields);

return $this->fetch('public/add');

}

/**

* 编辑表单项

* @param int $id

* @author 似水星辰 [ 2630481389@qq.com ]

* @return mixed

*/

public function edit($id = 0)

{

if ($id === 0) $this->error('参数错误');

// 获取数据

$info = ConfigModel::get($id);

$fields = [

['type' => 'hidden', 'name' => 'id',],

['type' => 'radio', 'name' => 'group', 'title' => '配置分组', 'extra' => config('config_group'), 'value' => $group,],

['type' => 'select', 'name' => 'type', 'title' => '配置类型', 'extra' => config('form_item_type')],

[

'type' => 'text',

'name' => 'title',

'title' => '配置标题',

'attr' => 'data-rule="required;" data-msg-required="标题不能为空,可以使用中文或者英文"'],

[

'type' => 'text',

'name' => 'name',

'title' => '配置标识',

'attr' => 'data-rule="required;name;" data-rule-name="[/^[a-zA-Z][a-zA-Z0-9_]*$/, \'请输入正确的配置标识,只能使用英文和下划线,必须以英文字母开头\']" data-msg-required="配置标识不能为空"'

],

['type' => 'textarea', 'name' => 'value', 'title' => '配置值'],

['type' => 'textarea', 'name' => 'extra', 'title' => '配置项', 'tips' => '用于单选、多选、下拉、联动等类型'],

['type' => 'textarea', 'name' => 'tips', 'title' => '配置说明'],

['type' => 'radio', 'name' => 'status', 'title' => '状态', '', 'extra' => ['禁用', '启用'], 'value' => 1]

];

$this->assign('page_title', '编辑配置');

$this->assign('form_items', $this->setData($fields, $info));

return $this->fetch('public/edit');

}

/**

* 设置表单数据

* @param array $fields 字段组

* @param array $info 字段值组

* @author 似水星辰 [ 2630481389@qq.com ]

* @return mixed

*/

public function setData($fields = [], $info =[]){

if(is_array($fields)){

foreach($fields as &$v){

if($v['type'] != 'sort'){

if($v['type'] == 'password'){

$v['value'] = '';

}else if($v['type'] == 'attr'){

$v['value'] = htmlspecialchars_decode($info[$v['name']]);

}else{

$v['value'] = $info[$v['name']];

}

}

}

}

return $fields;

}

}

 类似资料: