Laravel 5.1:自定义验证类

dbr

我做了这个自定义验证类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被选择,然后在参数字段的至少一个(firstsecondthird)也必须选择。

如果我在boot()方法的内部定义自定义验证AppServiceProvider.php那么所有方法都可以正常工作,但是如果我创建此CustomValidator类并从中删除代码,则无效AppServiceProvider.php

这并不奇怪,因为我正在打电话Validator而不是CustomValidatorCustomRequest课堂上。

我的CustomRequest课扩展了Request类,扩展了在许多地方提到的FormRequestValidator我真的不知道从哪里开始。如果需要,我可以在FormRequest这里上课。

有人可以帮我解决这个问题吗?

马尼克斯

方法中CustomValidator创建调用resolver方法后boot()

\Validator::resolver(function($translator, $data, $rules, $messages)
{
    return new CustomValidator($translator, $data, $rules, $messages);
});

另外,在内部调用它CustomRequest不会造成任何区别。应该没有问题的工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章