菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
15
0

Laravel 的表单请求类

原创
05/13 14:22
阅读数 938

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){
    //
});

有错误的地方欢迎指出 ,或者补充也可以 ,感谢每个对我提出建议的人

本作品采用《CC 协议》,转载必须注明作者和本文链接

发表评论

0/200
15 点赞
0 评论
收藏
为你推荐 换一批