使用ajax处理新增、修改的代码写在制器中,使得控制器代码臃肿,使用request类处理新增、请求的验证,使控制器看上去清爽简洁,以下代码修改为ajax支持的版本,后台使用的按照常规百度搜索即可。
示例代码:已一个新增医生类做示例
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class DoctorPost extends FormRequest
{
public function authorize() // 这个方法可以用来控制访问权限,例如禁止未付费用户评论…
{
return true; // 注意!这里默认是false,记得改成true
}
public function rules() // 这个方法返回验证规则数组,也就是Validator的验证规则
{
$aRules = [
'name' => 'required|max:30',
'province' => 'required',
'city' => 'required',
'area' => 'required',
'hospital' => 'required',
'section' => 'required',
'mobile' => 'required',
];
$aData = request()->input();
if (isset($aData['code'])) {
$aRules['code'] = 'required';
}
return $aRules;
}
public function messages()
{
$aMessages = [
'name.required' => '请填写您的姓名',
'province.required' => '请选择省份信息',
'city.required' => '请选择城市信息',
'area.required' => '请选择地区信息',
'hospital.required' => '请选择医院信息',
'section.required' => '请选择科室信息',
'mobile.required' => '请输入手机号',
];
$aData = request()->input();
if (isset($aData['code'])) {
$aMessages['code.required'] = '请输入验证码';
}
return $aMessages;
}
/**
*验证权限失败时的相应
*/
public function forbiddenResponse()
{
if ($this->ajax()) {
return response()->json(['msg' => '没有权限', 'success' => false]);
} else {
return abort(403);
}
}
/**
* 验证参数失败时的响应,如果验证指定的规则未通过,response将被调用,因为errors是个数组,保存所有的验证出错信息,这儿我们取出第一条显示,比较符合我们的使用习惯
* @param array $errors
* @return \Illuminate\Http\JsonResponse
*/
public function response(array $errors)
{
if ($this->ajax()) {
$firstErrors = array_shift($errors);
$error = $firstErrors[0];
return response()->json(['msg' => $error, 'success' => false]);
} else {
return abort(404);
}
}
}
控制器中调用,新增修改,依赖注入即可,示例修改
public function updateDoc(DoctorPost oDoctor,
aData =
id)->update($aData);
return json_encode(['success' => true]);
}