Laravel5.5中使用FormRequest自定义表单验证


什么是Form Request

Laravel中,每一个请求都会被封装为一个Request对象,Form Request对象就是包含了额外验证逻辑(以及访问权限控制)的自定义Request类。

如何使用Form Request做表单验证

Laravel提供了生成Form RequestArtisan命令:

php artisan make:request UserPost

于是就生成了app/Http/Requests/UserPost.php,让我们来分析一下内容:

 

<?php
namespace App\Http\Request;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use \Illuminate\Contracts\Validation\Validator;
Class UserPost extends FormRequest
{
/**
* 重写方法:返回数据的指定
* @param Validator $validator
*/
protected function failedValidation(Validator $validator) {
$error= $validator->errors()->all();
throw new HttpResponseException(response()->json(['code'=>400,'msg'=>'数据校验失败','data'=>$error[0]],500));
}
        protected $rules = [ ‘id’ => ‘required|integer’];
        public function authorize(){// 这个方法用来控制访问权限,例如禁止访问
                return true;// 注意!这里默认是false,记得改成true
        }
        public function rules(){//返回验证规则数组,也就是Validator的验证规则
               $rules = [];
               if(FormRequest::getPathInfo() == ‘/api/test/test’){
                       $rules = $this->rules;
               }
               return $fules;
        }
}

在Controller中使用:app/Http/Controller /UserController.php

 

<?php
namespace App\Http\Request;
use App\Http\Request\UserPost;
Class UserController extends Controller
{
        public function test(UserPost $request){
        }
}

配置自定义校验规则:app/Providers/AppServiceProvider.php

 

配置校验:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM