1. 介绍
控制器方法中的某些业务流程经常是重复的 ,比如输入验证 、用户认证 、授权等
如果想要一个结构来进行规范化 ,可以使用 Laravel 的表单请求将这些常见行为从控制器方法中提取出来
表单请求是一个自定义的请求类 。它的目的是映射到提交表单 、负责验证请求 、授权用户 ,并将用户重定向到失败的验证( 可选 )
2. 创建表单请求
php artisan make:request CreateCommentRequest
创建出的文件内容如下
// app/Http/Requests/CreateCommentRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CreateCommentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// 这个方法如果返回 true ,用户就会被授权执行对应的请求( 不知道对应的请求是什么别急 ,继续往下看 )
// 如果返回 false ,Laravel 会返回 403 Forbidden 错误 ,而不执行路由代码
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
// 这个方法返回一个规则数组
// 如果对应的请求没有通过这个验证规则 ,就会像 Laravel 控制器的 validate() 方法一样( 将用户重定向到上一页 ,并闪存用户输入以及错误信息 )
// 这里不理解的可以参考下 Laravel 的 "验证器" 和 "消息包"
return [
//
'title' => 'required'
];
}
}
3. 使用表单请求
使用表单请求很简单 ,我们以上面例子中生成的表单请求类为例
// 任何指定 (type-hint) 表单请求的路由都会自动进行 App\Http\Requests\CreateCommentRequest 中定义的验证
Route::post('comments', function(App\Http\Requests\CreateCommentRequest $request){
//
});
网友评论