php - Laravel - 在自定义验证中使用验证规则

标签 php validation laravel

我正在 Laravel 4 上编写自定义验证规则。但是,我期待在其中使用现有的验证规则(例如:exists、email、min 等)。我不知道该怎么做,我猜使用 Validator::make 并不是正确的方法。我的代码如下:

    Validator::extend('check_fulfilled',function($attribute,$value,$parameters){
        $movieidfield = Input::get('movieid');
                if(     empty($movieidfield )    ) return false;
                    // Here I would like to test $movieidfield 
                    //with exists and min validation rules 
    });

如果有人能帮我解决这个问题,那就太好了。谢谢!

最佳答案

Validation rules are composable .

像您这样的自定义验证规则不需要从 Input 参数包中获取值。 Validator class already takes care of that .

Validator::extend('check_fulfilled', function($attribute, $value, $parameters) {
    return !empty($value);
});

例如,要将自定义验证规则与其他现有规则一起使用,您可以在实例化 Validator 时编写。实例:
$v = Validator::make($data, array(
     'movieid' => 'check_fulfilled|email',
));

Unless you know what you are doing should you inline validation rules.



为此,您可以解析 Validator应用服务容器中的单例,由 ValidationServiceProvider 在那里注册.
Validator::extend('check_fulfilled', function($attribute, $value, $parameters) {
    if (empty($movieidfield)) return false;
    $v = App::make('validator');

    return $v->validateExists($attribute, $value, $parameters) 
           && $v->validateEmail($attribute, $value);
});

请注意 $parameters数组需要保存内联验证规则的值。

请参阅验证方法的签名以了解要传递的参数。

Validator::validateExists($attribute, $value, $parameters)

Validator::validateEmail($attribute, $value)

Validator::validateMin($attribute, $value, $parameters)

关于php - Laravel - 在自定义验证中使用验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444292/

相关文章:

Excel 数据验证 - 公式超过 256 个字符限制

forms - Yii2:如何为 activeform 使用自定义验证功能?

php - Supervisord 让我的 Laravel 队列 :listen throw InvalidArgumentException

php - Laravel 获取关系计数,其中数据库中的字段设置为特定值

php - 如何在本地使用 XAMPP 设置 F3?

javascript - 使用php和mysql的条形图

javascript - 如何使用javascript删除表中的特定行?

php - Laravel 只更新单行

mysql - SQLSTATE[22003] : Numeric value out of range: 1264 Out of range value

php - 请求 stream_tag 表