Laravel 5.1:自定义验证class
Laravel 5.1: custom validation class
我做了这个自定义验证 class, 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
)。
如果我在 AppServiceProvider.php
的 boot()
方法中定义自定义验证,则一切正常,但如果我创建此 CustomValidator class 并从 AppServiceProvider.php
中删除代码,则无效。
这并不让我感到惊讶,因为我在 CustomRequest
class.
中调用 Validator
而不是 CustomValidator
My CustomRequest
class extends Request
classs extends FormRequest
class 其中提到了 Validator
不少地方。我真的不知道从哪里开始。
如果需要,我可以在此处 c/p FormRequest
class。
谁能帮我解决这个问题?
创建CustomValidator
后只需在boot()
方法中调用resolver
方法:
\Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
此外,在 CustomRequest
中调用它也没有区别。应该可以正常工作。
我做了这个自定义验证 class, 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
)。
如果我在 AppServiceProvider.php
的 boot()
方法中定义自定义验证,则一切正常,但如果我创建此 CustomValidator class 并从 AppServiceProvider.php
中删除代码,则无效。
这并不让我感到惊讶,因为我在 CustomRequest
class.
Validator
而不是 CustomValidator
My CustomRequest
class extends Request
classs extends FormRequest
class 其中提到了 Validator
不少地方。我真的不知道从哪里开始。
如果需要,我可以在此处 c/p FormRequest
class。
谁能帮我解决这个问题?
创建CustomValidator
后只需在boot()
方法中调用resolver
方法:
\Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
此外,在 CustomRequest
中调用它也没有区别。应该可以正常工作。