自定义 Laravel 验证规则示例
Posted
技术标签:
【中文标题】自定义 Laravel 验证规则示例【英文标题】:custom Laravel Validation Rule example 【发布时间】:2016-11-14 03:19:58 【问题描述】:我很难弄清楚如何在 Laravel 5.1 中编写自定义验证规则。我读过documentation,但似乎不完整。仔细看,我只是看不到我应该把我的实际验证逻辑放在哪里,比如if (stristr($string, 'test')) ...
等等。
另一方面,它没有显示错误消息定义应该在哪个方法/数组中:
"foo" => "Your input was invalid!",
"accepted" => "The :attribute must be accepted.",
// The rest of the validation error messages...
我的实际用例有些奇怪,所以对于这个问题,我们以验证安全密码为例。安全密码必须至少有 8 个字符长,包含一个小写和大写字母、一个数字和一个特殊字符。
实际上,对于一个例子来说,这是一个相当高的要求,那么只检查一个数字怎么样?或者对值运行任何字符串函数?
如何创建这样的验证规则?
【问题讨论】:
你检查过这个链接 - laravel.com/docs/5.1/validation#custom-validation-rules 吗?添加新的自定义验证更容易 @Jobayer 我在我的问题中确实把它联系起来了。 我认为如果有人想用不在表格中的东西进行验证,就会遇到这个问题。我也在寻找答案。 我使用“手动创建验证器”和 After Validation Hook 来解决这个问题 【参考方案1】:如document you've linked 中所述,您需要使用静态extend
方法将验证逻辑放入ServiceProvider
的boot
函数中(例如AppServiceProvider
)。
这是一个简短的示例(与文档中的示例相关联)。
<?php
namespace App\Providers;
use Validator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
public function boot()
Validator::extend('yourFunctionNameHere', function($attribute, $value, $parameters, $validator)
return $value == 'yourTestValueHere'; //change the body as you need it
);
用户的输入分配给$value
【讨论】:
这是我不明白的——我在哪里实际测试值?我应该把if (strlen($string)) < 12 ) ...
之类的东西放在哪里?
值是用户插入的文本/字符串;)
您是否真的进行了自己的自定义验证,或者您只是从文档中复制?你的例子没有回答我提出的问题。
sitepoint.com/… 正是您所需要的。当我需要这样的东西时,我会做一些不同的事情,但它会让你继续前进。只是你想如何构建它的问题。
不是我真正的答案,但我有一些自定义验证规则可以扩展验证器。我的有一些细微差别。如果我有时间,我可以发布我自己的示例之一。以上是关于自定义 Laravel 验证规则示例的主要内容,如果未能解决你的问题,请参考以下文章