在TP5的Common.php页面中,创建统一的处理表单数据的函数,这样页面在提交时就非常简单了,只需要在Form表单中添加一些隐藏的区域,然后再标准化Javascript函数提交数据即可!
/**
* 统一处理表单的增删改数据(第二版)
* @Author YEYU2001
* @DateTime 2020-07-19T31:38:29+0800
* @param 数组 $param表单传递过来的序列化数据
* @return json 将处理数据的结果返回
* 使用说明:
* 第一步:在表单隐藏区域添加必要的参数,如控制器等;
* 第二部:在控制器中有(最好统一的)处理函数调用本函数自动处理;
*/
function CMN_UpdateFormData($param) {
// 待返回的数组
$data = array();
$Type = ['NEW'=>'创建', 'EDT'=>'更新', 'DEL'=>'删除'];
// 获取参数
$flag = strtoupper($param['__TYPE__']);
$modal = $param['__MODAL__'];
$table = $param['__CONTROLLER__'];
// 动态变量拼接创建对象
$model_string = '\app\\'.$modal.'\model\\' . $table;
$validate_string = '\app\\'.$modal.'\validate\\' . $table;
// 创建对象
$model = new $model_string; // 创建模型对象
$validate = new $validate_string; // 创建验证对象
// 校验用户数据
$check = $validate->check($param);
// 校验数据后根据类别处理数据
if (!$check) {$data['msg'] = $validate->getError();} else {
// 按照类别进行不同处理
switch ($flag) {
case 'NEW': $info = $model->allowField(true)->save($param); break;
case 'EDT': $info = $model->allowField(true)->save($param, ['id' => $param['id']]); break;
case 'DEL': $info = $model->where('id', $param['id'])->update(['status' => 0]); break;
}
// 设定返回结果字符串
if ($info) {
$data['rst'] = 1; // 返回结果码
$data['msg'] = $Type[$flag]."成功";
} else {
$data['rst'] = 0; // 返回结果码
$data['msg'] = $Type[$flag]."失败";
}
}
// 返回字符串
return json($data);
}
这样,在控制器中就只需要一条语句就可以自动实现数据的增加更新和删除了!
// 统一处理增删改数据(第三版)
public function CMN_DataCUD() {
if (CMN_UpdateFormData(request()->param())) { $this->redirect('index'); }
}
与此同时,在页面中需要的设置也是非常少的,只需要在form表单中设置好提交的控制器中的方法,另外增加几个隐藏域就好:
<!-- 自动处理所需内容 -->
<input type="hidden" id="__token__" name="__token__" value="{$Request.token}" />
<input type="hidden" id="__TYPE__" name="__TYPE__" value="{$formtype}" />
<input type="hidden" id="__MODAL__" name="__MODAL__" value="index" />
<input type="hidden" id="__CONTROLLER__" name="__CONTROLLER__" value="Version" />
网友评论