我做了这个自定义验证类CustomValidator.php
:
<?php
namespace App;
use Illuminate\Validation\Validator;
class CustomValidator extends Validator{
public function validateRequiredWithOneOf($attribute, $value, $parameters)
{
$data = $this->getData();
foreach ($parameters as $p) {
if ( array_get($data,$p) != null) {return true;}
}
return false;
}
public function replaceRequiredWithOneOf($message, $attribute, $rule, $parameters)
{
return $this->replaceRequiredWith($message, $attribute, $rule, $parameters);
}
}
我称之为 CustomRequest.php
'input_field' => 'required_with_one_of:first,second,third',
如果属性input_field
被选择,然后在参数字段的至少一个(first
,second
,third
)也必须选择。
如果我在boot()
方法的内部定义自定义验证,AppServiceProvider.php
那么所有方法都可以正常工作,但是如果我创建此CustomValidator类并从中删除代码,则无效AppServiceProvider.php
。
这并不奇怪,因为我正在打电话Validator
而不是CustomValidator
在CustomRequest
课堂上。
我的CustomRequest
课扩展了Request
类,扩展了在许多地方提到的FormRequest
类Validator
。我真的不知道从哪里开始。如果需要,我可以在FormRequest
这里上课。
有人可以帮我解决这个问题吗?
在方法中CustomValidator
只创建调用resolver
方法后boot()
:
\Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
另外,在内部调用它CustomRequest
不会造成任何区别。应该没有问题的工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句