使用ajax处理新增、修改的代码写在制器中,使得控制器代码臃肿,使用request类处理新增、请求的验证,使控制器看上去清爽简洁,以下代码修改为ajax支持的版本,后台使用的按照常规百度搜索即可。
示例代码:已一个新增医生类做示例
<?phpnamespace 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 $request, Doctor $oDoctor, $id){ $aData = $request->all(); unset($aData['_token']); unset($aData['mobile']); Doctor::where('id', $id)->update($aData); return json_encode(['success' => true]);复制代码