什么是Form Request
在Laravel
中,每一个请求都会被封装为一个Request
对象,Form Request
对象就是包含了额外验证逻辑(以及访问权限控制)的自定义Request
类。
如何使用Form Request做表单验证
Laravel
提供了生成Form Request
的Artisan
命令:
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
:
配置校验: