PHP   发布时间:2019-11-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Laravel 5.5 的自定义验证对象/类示例代码详解大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代。

Laravel 5.5 将提供一个全新的自定义验证规则的对象,以作为原来的 Validator::extend 方法的替代。。很多时候我们会直接用正则表达式来处理这种特殊的验证,也有时候我们会选择用 Validator::extend 来扩展一个自定义的规则。但在 Laravel 5.5 版本中,我们有了新的手段,只要定义一个实现 Illuminate\Contracts\Validation\Rule 接口的类即可实现自定义的验证规则,并可以直接使用。

下面是一个简单的示例:

php;"> use Illuminate\Contracts\Validation\Rule; class IsOddValidationRule implements Rule { public function passes($attributes,$value) { return ($value % 2 !== 0); } public function message() { return ':attribute 必须是奇数'; } }

以上代码定义了一个 IsOddValidationRule 的自定义验证类,在 Controller 中要使用这个验证类的话,可以这样写

validate($request,[ 'oddField' => [new IsOddValidationRule] ]); }

同样的效果,也可以通过匿名函数(闭包函数)来实现:

607_15@validate($request,[ 'oddField' => [function($attributes,$value,$fail) { if ($value % 2 === 0) { $fail(':attribute 必须是奇数!'); } }] ]); }

在验证的表单项为空值或者不存在的时候,对应的自定义验证规则不会执行。这个与系统自带的验证规则的逻辑是一致的。如果你希望你的自定义验证规则,即使是在对应的表单项为空值时也被执行的话,那么只要把继承的接口从 rule 改成 ImplicitRule 即可:

php;"> class IsOddValidationRule implements ImplicitRule { ... }

采用 Laravel 5.5 新增的自定义验证类,可以更好地管理大量的自定义验证规则,而且在 phpStorm 之类的 IDE 中,从验证代码里快速跳转到对应的验证类的代码也会更方便。毕竟采用 Validator::extend 的话,你只能通过搜索对应验证类名称的字符串来找到规则定义的源代码。

匿名函数的自定义验证规则在一次性的简单验证逻辑中用起来确实会很方便,或者是在编码过程中快速测试验证逻辑也很实用。但是总的来说,还是建议采用更具组织性和可读性的自定义验证类。最佳方法是在编写 Controller 的过程中用匿名函数快速验证自定义规则,然后再把它移到自定义的验证类对象中。

你可以查看该功能在 Laravel 框架的 github 上的 Pull request ,阅读具体的实现代码以及相关的测试代码。

https://github.com/laravel/framework/pull/19155/files https://laravel-news.com/custom-validation-rule-objects

总结

以上所述是小编给大家介绍的Laravel 5.5 的自定义验证对象/类示例代码详解,希望对大家有所帮助。程序员遇到问题都会上(菜鸟教程jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

大佬总结

以上是大佬教程为你收集整理的Laravel 5.5 的自定义验证对象/类示例代码详解全部内容,希望文章能够帮你解决Laravel 5.5 的自定义验证对象/类示例代码详解所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:laravel