Laravel5.1 Request类,处理ajax请求,返回JSON

       使用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]);复制代码


转载于:https://juejin.im/post/5cc182206fb9a031fd6342f1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值