Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel如何制作自定义验证器?_Php_Laravel_Validation - Fatal编程技术网

Php Laravel如何制作自定义验证器?

Php Laravel如何制作自定义验证器?,php,laravel,validation,Php,Laravel,Validation,我需要制作自己的验证器,扩展illighted\Validation\validator 我在这里阅读了一个答案中给出的示例: 但问题是它没有清楚地显示如何使用自定义验证器。它不会显式调用自定义验证器。您能给我一个如何调用自定义验证器的示例吗。我不知道这是否是您想要的,但要设置自定义规则,您必须首先扩展自定义规则 Validator::extend('custom_rule_name',function($attribute, $value, $parameters){ //code

我需要制作自己的验证器,扩展
illighted\Validation\validator

我在这里阅读了一个答案中给出的示例:


但问题是它没有清楚地显示如何使用自定义验证器。它不会显式调用自定义验证器。您能给我一个如何调用自定义验证器的示例吗。

我不知道这是否是您想要的,但要设置自定义规则,您必须首先扩展自定义规则

Validator::extend('custom_rule_name',function($attribute, $value, $parameters){
     //code that would validate
     //attribute its the field under validation
     //values its the value of the field
     //parameters its the value that it will validate againts 
});
然后将该规则添加到验证规则中

$rules = array(
     'field_1'  => 'custom_rule_name:parameter'
);

在Laravel 5.5之后,您可以创建自己的自定义验证规则对象

要创建新规则,只需运行artisan命令:

php artisan make:rule GreaterThanTen
laravel将把新的规则类放在
app/Rules
目录中

自定义对象验证规则的示例可能类似于:

namespace-App\Rules;
使用照明\合同\验证\规则;
类GreaterThanTen实现规则
{
//应根据属性值是否有效返回true或false。
公共函数传递($attribute,$value)
{
返回$value>10;
}
//此方法应返回验证失败时应使用的验证错误消息
公共功能消息()
{
返回“属性:必须大于10”;
}
}
定义了自定义规则后,您可以在控制器验证中使用它,如下所示:

公共函数存储(请求$Request)
{
$request->validate([

“年龄”=>[“必需”,新的大于十岁], ]); }

这种方法比在
AppServiceProvider
Class

上创建
Closures
的旧方法要好得多。下面是一个用于检查的自定义验证规则示例。我知道这是一个相当古老的答案,但我对Laravel是新手,可以使用澄清:我在CVs中看到的大多数示例都显示了控制器操作的基本用法。如果我使用的是表单请求,那么上面的示例是否可以在
rules()
函数中用作
return['age'=>'greaterthanten']
?@cautionbug,是的,您可以在表单请求类中使用CV,只需导入新的自定义验证规则类:
use App\rules\GreaterThanTen
;['required',new GreaterThanTen]不起作用,请改用[$request,new GreaterThanTen]