Laravel:将现有验证规则归为一个自定义规则?

时间:2018-10-12 10:57:53

标签: php laravel laravel-5 laravel-validation

是否可以在自定义规则中使用现有的Laravel验证规则?

示例: 0123 0 OOOO 1 OOOO 2 OOOO 3 OOOX <--- mouse click here 我只想将这些规则归为一个规则required|string|max:100

通过这种方式

custom_rule_name

Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
    return $value == 'required|string|max:100';//something like this
});

让我知道是否有可能?

谢谢

Kaleem

2 个答案:

答案 0 :(得分:0)

不,正确的方法是在验证请求时选择每个规则,而不是创建一个包含所有逻辑的规则。

答案 1 :(得分:0)

您可以在Validator函数内使用passes()门面。像这样:

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Validator;

class Uppercase implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        $validator = Validator::make([$attribute => $value], [
            $attribute => 'required|string|max:100',
        ]);

        return !$validator->fails();
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be uppercase.';
    }
}