首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 5.0 之 表单验证类 (Form Requests)

. ---- 让人头痛的表单验证 只要你曾经使用 Laravel 框架的过程中试图找到有关用户输入验证的最佳实践, 你就应该了解这是一个争论最多并且几乎没有达成共识的话题....Form Requests 使表单验证不再让人头痛 Laravel 5.0 带来了 Form Requests, 这是一种特殊的类型, 用于提交表单进行数据的检查和验证....Laravel 会在解析 POST 路由之前自动把用户输入的信息传递给相应的表单请求, 因此我们的所有验证逻辑都可以移到独立于控制器和模型之外的 FormRequest 对象中....true; } // 可选: 重写基类方法 public function forbiddenResponse() { // 这个是可选的, 当认证失败返回自定义的..., 403); } // 可选: 重写基类方法 public function response() { // 如果需要自定义验证失败的行为, 可以重写这个方法

3.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

为你的 Laravel 验证器加上多验证场景的实现

前言 我们使用 laravel 框架的验证器,有的时候需要对表单等进行数据验证,当然 laravel 也为我们提供了 Illuminate\Http\Request 对象提供的 validate...FormRequest 通过新建文件将我们的验证部分单独分开,来避免控制器臃肿。如果验证失败,就会生成一个让用户返回到先前的位置的重定向响应。...这些错误也会被闪存到 Session 中,以便这些错误都可以页面中显示出来。如果传入的请求是 AJAX,会向用户返回具有 422 状态代码和验证错误信息的 JSON 数据的 HTTP 响应。...场景验证 我们需要提前验证类中定义好验证场景 如下,支持使用字符串或数组,使用字符串,要验证的字段需用 , 隔开 //自定义场景 protected $scene = [ 'add'= "title...,又减少了 FormRequest 文件过多,还可以自定义 json 数据是不是方便多了呢, 参考文档 laravel 表单验证表单验证Laravel 5.5 中文文档》 thinkphp

2.8K10

推荐17-Laravel使用 JWT 认证的 Restful API

在此文章中,我们将学习如何使用 JWT 身份验证 Laravel 中构建 restful API 。JWT 代表 JSON Web Tokens 。...用户注册需要姓名,邮箱和密码。那么,让我们创建一个表单请求验证数据。... logout 方法中,验证请求是否包含令牌验证。通过调用 invalidate 方法使令牌无效,并返回一个成功的响应。如果捕获到 JWTException 异常,则返回一个失败响应。... getAuthUser 方法中,验证请求是否包含令牌字段。然后调用 authenticate 方法,该方法返回经过身份验证的用户。最后,返回带有用户的响应。 身份验证部分现在已经完成。...然后,使用请求中的数据去创建一个新的产品模型。如果,产品成功的写入数据库,会返回成功响应,否则返回自定义的 500 失败响应

10.9K20

通过匿名函数和验证规则类自定义 Laravel 字段验证规则

Laravel 验证器的强大之处不仅在于提供前面提到的多种请求验证方式,以及非常丰富的字段验证规则(不同规则可以组合形成新的验证规则),从 5.5 版本开始,还支持自定义字段验证规则。...,我们国家,这也是司空见惯的事情,那要如何实现这个 Laravel 办不到的事情呢,通过自定义验证规则: $this->validate($request, [ 'title' => [...这样,我们提交表单输入包含敏感词的数据,就会校验出来了: ?...如果你使用的是 Validator::make 进行请求字段验证的话,实现方式完全一样,不再赘述,即使是表单请求类 SubmitFormRequest 中,也是一样的,把代码迁移过去就好了: public...'url' => 'URL', 'picture' => '图片' ]; } 这样,验证规则类 SensitiveWordRule 验证失败返回错误提示,就可以将 :attribute

2.8K20

Laravel 控制器中进行表单请求字段验证

很多 Web 框架都对此功能专门提供了工具集,Laravel 也不例外,而且这个工具集异常丰富,基本上涵盖了目前主流的所有验证规则,即使是一些非常个性化的验证,也可以基于 Laravel 验证类的扩展功能来自定义验证规则...接下来,我们就一起来看看如何Laravel 中对表单请求进行验证。...作为一个灵活的框架,Laravel 提供了多种方式对表单请求进行验证,你可以控制器中通过 $this->validate() 方法验证用户请求,也可以通过单独的表单验证类定义验证规则,再将其注入到相应的控制器方法...如果表单验证通过,则继续向下执行,如果表单验证不通过,会抛出 ValidationException 异常,具体怎么处理这个异常要看请求方式,如果是 Ajax 请求的话,将会返回包含错误信息的 JSON...对于大量请求字段,或者复杂的请求验证,都写到控制器方法中显然会导致控制器的代码变得臃肿,可维护性也比较差,所以我们下一篇教程将讨论如何验证代码移出控制器这一话题,并且根据项目需求灵活实现自定义验证规则

5.8K10

laravel框架学习记录之表单操作详解

分享给大家供大家参考,具体如下: 1、MVC数据流动 拿到一个laravel项目最基本的是弄清楚它的页面请求、数据流动是怎样进行的,比如当通过get请求index页面如何显示如下的学生信息列表: ?...首先当一个页面请求到达,需要在routes/web.php中定义路由请求以及对应的处理方法: Route::get('index','StudentController@getIndex'); 然后...后,controller中对其先进行验证,如果正确则存入数据库,否则返回到上一页面并抛出一个异常errors,页面中显示错误errors中的信息 //表单验证 $request- validate(...,显示每个输入框之后 <p class="form-control-static text-danger" {{$errors- first('Student.name')}}</p 当验证失败返回表单页面后...这是由于laravel自动设置了防止CSRF跨域攻击,你需要在表单内添加csrf_filed()来告诉laravel请求的发起人与表单提交者是同一个人。

12.6K30

Laravel Validation 表单验证(二、验证表单请求

验证表单请求 创建表单请求验证 面对更复杂的验证情境中,你可以创建一个「表单请求」来处理更为复杂的逻辑。表单请求是包含验证逻辑的自定义请求类。...他们会自动被 Laravel 提供的 [服务容器] 自动解析。 所以,验证规则是如何运行的呢?你所需要做的就是控制器方法中类型提示传入的请求。...$validated = $request->validated(); } 如果验证失败,就会生成一个让用户返回到先前的位置的重定向响应。... AJAX 请求中,则会返回 JSON 格式的响应。...passes 方法接收属性值和名称,并根据属性值是否符合规则而返回 true 或 false。 message 方法应返回验证失败使用验证错误消息: <?

29.1K10

完善你的Laravel异常处理

这篇文章我们来简单梳理一下Laravel中提供的异常处理能力,然后讲一些开发中使用异常处理的实践,如何使用自定义异常、如何扩展Laravel的异常处理能力。...Illuminate\Auth\Access\AuthorizationException 用户请求未通过Laravel的策略(Policy)验证抛出此异常 Symfony\Component\Routing...app('sentry')->captureException($exception); } parent::report($exception); } 还有默认的渲染方法表单验证生成响应的...这样我们的控制器中就完全省略了判断表单验证是否通过如果不通过再输出错误响应给客户端的逻辑了,将这部分逻辑交给了统一的异常处理器来执行能让控制器方法瘦身不少。...使用自定义异常 这部分内容其实不是针对 Laravel框架自定义异常,在任何项目中都可以应用我这里说的自定义异常。

2.7K20

通过 Laravel 表单请求类实现字段验证和错误提示

在上一篇教程中,我们已经演示了如何在控制器方法中对表单请求字段进行验证,并且提到如果请求字段很多很复杂,都写到控制器方法里面会导致控制器臃肿,从单一职责原则来说需要将表单请求验证拆分出去,然后通过类型提示的方式注入到控制器方法...false 则表示用户无权提交表单,会抛出权限异常中止请求,现在我们将其调整为返回 true 即可,然后我们 rules() 方法中定义请求字段验证规则,比如我们可以将上一篇教程中的字段验证规则移到该方法中...$request) { return response('表单验证通过'); } Laravel 底层解析这个控制器方法的参数,如果发现这个请求是一个表单请求类,则会自动执行其中定义的字段验证规则对请求字段进行验证...,如果验证成功则继续执行控制器中的方法,否则会抛出验证失败异常,和我们上一篇控制器方法中实现验证逻辑的处理一样。...我们测试下表单请求,会发现和在控制器方法中通过 $this->validate() 验证字段的结果一样: ? 这样一来,以后我们就可以表单请求类中维护字段验证逻辑了,完成了请求验证和控制器的解耦。

3.8K30

laravel框架使用FormRequest进行表单验证验证异常返回JSON操作示例

本文实例讲述了laravel框架使用FormRequest进行表单验证验证异常返回JSON操作.分享给大家供大家参考,具体如下: 通常在项目中,我们会对大量的前端提交过来的表单进行验证,如果不通过,则返回错误信息...前端为了更好的体验,都使用ajax进行表单提交,虽然 validate() 方法能够根据前端的不同请求方式,返回不同的结果。...但是返回的json格式并不是我们想要的,这个时候,我们就需要自定义返回错误结果。...先创建一个表单请求类: php artisan make:request TestRequest 然后 rules() 和 messages() 方法里填写自已的验证规则和消息 <?...'姓名必填', 'pwd.required' = '密码必填', ]; } } 注意,父类 FormRequest中的 failedValidation() 方法用来处理验证失败

3.3K41

Laravel Validation 表单验证(一、快速验证

默认情况下,Laravel 的控制器基类使用 ValidatesRequests trait,它提供了一种方便的方法去使用各种强大的验证规则来验证传入的 HTTP 请求。...如果验证通过,代码就可以正常的运行。如果验证失败,则会抛出异常,并自动将对应的错误响应返回给用户。...:posts', 'max:255'], 'body' => ['required'], ]); 首次验证失败后停止运行 如果你希望某个属性第一次验证失败后停止运行验证规则,你需要附加 bail...如果 nullable 的修饰词没有被添加到规则定义中,验证器会认为 null 是一个无效的日期格式。 AJAX 请求 & 验证 在这个例子中,我们使用传统的表单将数据发送到应用程序。...当我们对 AJAX 的请求使用 validate 方法Laravel 并不会生成一个重定向响应,而是会生成一个包含所有验证错误信息的 JSON 响应

3.7K10

3分钟短文 | Laravel表单验证没规则可用?你试试自定义,真香!

引言 Laravel内部提供了很多用于表单验证的规则,都是通过 Validator 对象进行解析和处理。但是我们会遇到现有规则无法满足验证需求的情况。 ?...那么如何实现,end_page 字段的值,一定比 initial_page 的值大呢?为了验证方式的统一,不准备把这个规则写到控制器逻辑内。用laravel的方式该如何实现呢?...laravel内我们可以使用扩展功能,自定义验证规则,扩展 Validator 对象的验证规则。我们需要把扩展规则写到 AppServiceProvider 内,使得系统加载可以正确地使用。...对于验证失败返回的错误信息,使用下面的代码: Validator::replacer('greater_than_field', function($message, $attribute, $rule..., $parameters) { return str_replace(':field', $parameters[0], $message); }); 以上两个方式准备完毕后,就可以验证规则内使用

57320

Laravel 5.5 LTS 正式发布!

早期的 Laravel 版本中,你可以 App\Exceptions\Handler::render() 方法添加检查,并有条件地基于异常类型来返回响应。...Responsable 响应接口 Laravel响应方法新增了一个 Responsable 接口。 实现接口的类可以从控制器方法返回。...请求中的验证方法 Laravel 的过去版本中,你可以将请求实例传递给控制器中的 $this->validate() 方法: $this->validate(request(), [...]); 现在...这样就可以省去对 Request::all() 的使用自定义验证规则 自定义验证类,是旧版 Validator::extend(仍然可以使用)拓展自定义规则一个替代方式。...; } }] ]); 以上示例使用闭包来对属性的值的校验,如果验证失败,则返回失败参数。

2.5K30

3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据

代码时间 获取数据的途径除了早前介绍的路由地址内通过位置参数绑定的方式, 还有上一章介绍的表单提交的方式,还有一些比如在get请求内附加查询参数进行传送的, 不管形式是什么,我们需要将其统一口径,将其规划为规范的数据格式...是的,这是laravel框架写好了,如果验证失败,会使用 MessageBag 这些类来状态验证失败的信息,然后将错误信息渲染到公共模板部分,使用 $errors 接收,这是一个对象,可以手动遍历输出。...然后显式地使用 $validator->fails() 方法验证是否验证失败。...如果验证失败,构建 Response 对象进行重定向,并使用 withErrors 语法糖将验证提示信息返回,而重定向的页面内,可以使用 $errors 变量获取到所有的错误信息。...还有验证规则,千奇百怪,内置的规则都有很多,用得到的,用不到的,处理复杂业务逻辑的时候, 还要祭出自定义验证规则这把大宝剑,不过都是后话了。

1.9K10

3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据

代码时间 获取数据的途径除了早前介绍的路由地址内通过位置参数绑定的方式, 还有上一章介绍的表单提交的方式,还有一些比如在get请求内附加查询参数进行传送的, 不管形式是什么,我们需要将其统一口径,将其规划为规范的数据格式...是的,这是laravel框架写好了,如果验证失败,会使用 MessageBag 这些类来状态验证失败的信息,然后将错误信息渲染到公共模板部分,使用 $errors 接收,这是一个对象,可以手动遍历输出。...然后显式地使用 $validator->fails() 方法验证是否验证失败。...如果验证失败,构建 Response 对象进行重定向,并使用 withErrors 语法糖将验证提示信息返回,而重定向的页面内,可以使用 $errors 变量获取到所有的错误信息。...还有验证规则,千奇百怪,内置的规则都有很多,用得到的,用不到的,处理复杂业务逻辑的时候, 还要祭出自定义验证规则这把大宝剑,不过都是后话了。

1.1K00

Laravel系统3.3】控制器与表单验证

控制器与表单验证请求过程中,控制器往往是我们在做业务开发绕不过的一环。从 MVC 理论的成熟到现代化的开发过程中,控制器一直扮演着重要的角色。...但其实,Laravel 中还是为我们做了一些事情。比如返回 HTTP 的头信息,包括响应状态码、基础的头信息之类的内容。 另外,我们还可以定义一个单行为控制器,这是什么意思呢?...既然说到这里了,那么 Laravel 框架中,其实也是有对应的表单验证的功能的,可以方便地让我们进行表单参数的验证。...其一,这个验证是直接通过请求对象实现的,也就是这个 Request 对象中的方法,而且我们控制器中没有返回 Response ,也就是说,这一切框架都自动为我们处理了。...它的第一个参数我们传递的是所有的请求数据,当然,也可以自己传递一个数组进来进行验证。第二个参数就是和上面一样的验证配置信息。不同的,它的第三个参数是我们可以自定义验证提示信息。

8.6K20

Laravel Api表单验证失败被重定向到主页

Laravel Api 开发中,需要实现表单验证,但发现了一个问题, Laravel 中,api开发实现表单验证,如果验证失败,会被302重定向到主页。...如图,我们在请求 /passport/_register ,状态码变成了302,而后重新请求了 127.0.0.1,这显然不是我们所要的结果,我们需要在表单验证失败,抛出异常,响应错误信息给前端。...首先,定位到父类源码 Illuminate\Foundation\Http\FormRequest,以寻求解决方案, FormRequest 类中,有一个方法 failedValidation:...return $url->action($this->redirectAction); } return $url->previous(); } 这个方法显然是处理验证失败的...1.新建 ApiRequest.php php artisan make:request ApiRequest 2. ApiRequest 中重写 failedValidation protected

59020

Laravel5 自定义路由中间件的使用步骤,太好用,珍藏了!

前言 Laravel5中我们处理request请求,中间会有很多环节。本文所说的中间件,位于路由和控制器之间,起到过滤和筛选请求的作用。 ? 为什么不放到“表单验证”里呢?...因为有些请求,我们可能不太理会表单内容,或者想要在表单数据注入控制器方法之前,就进行拦截,那么,中间件无疑是一个好的选择。 创建中间件 下面示例,创建一个中间件,用于判断用户是否进行了“实名认证”。...如果验证过,则通过;未验证,则返回提示信息。...如果没有验证使用 response()->json() 构造一个JSON响应数据返回给客户端。那么接下来的请求都不需要进行。...结语 好了,上面就是laravel自定义中间件的使用过程,相信大家可以很快掌握。 自定义的中间件可以为我们处理更为复杂的逻辑,也使控制器代码更为整洁,不会把所有逻辑都堆控制器内,维护起来臃肿冗余。

1K20

3分钟短文:十年窖藏,Laravel告诉你表单验证的“正确姿势”

[img] 本文教你正确地验证用户表单提交的数据,那就是十余年坚定好用的Laravel验证器。...把Request请求表单数据原封不动地传入到create方法内, 并写入了数据库。 当然,Event模型内,我已经加上 $fillable 用于标记那些可以写入数据的字段了,但是仍然不够。...重要的是那些验证规则,我来逐一为你解读。验证规则内使用的都是laravel内置写好了的规则,拿来即用。...自定义错误提示信息 错误提示信息,是laravel内置验证规则给定的,如果你觉得提示信息不够详尽,不太满意,自己写也是没问题的。 我把上面的验证规则重写一下。...写在最后 本文初步介绍了laravel验证器内置规则的使用,以及如何验证信息渲染到视图文件内。 并介绍了自定义验证错误提示信息的使用方法。

1.7K30
领券