将数据传递给laravel自定义验证规则

问题描述 投票:1回答:1

如何从控制器验证器传递自定义验证规则中的某个变量?

例如:

      class RegisterController extends Controller {

             $someVariableINeed = 2

             protected function validator(array $data) {
                    return Validator::make($data, [
                                'name' => 'required|string|max:255',
                                'email' => 'required|string|email|max:255|unique:users',
                                'password' => 'required|string|min:6|confirmed',
                                'someField' => ['required', new \App\Rules\CustomValidationRule]
                    ]);
                }
 .....

        }

\App\Rules\CustomValidationRule

.....

     public function passes($attribute, $value) {
       if ($value == 1 && $someVariableINeed == 2) {
        return true
       }
       return false
     }

.....

我需要将$someVariableINeed中的变量RegisterController传递给\App\Rules\CustomValidationRule

类似于max:255的工作原理。我想传递给我的自定义规则255

laravel validation laravel-5.7
1个回答
2
投票

将其添加为自定义验证参数,如下所示:

class CustomValidationRule extends Rule
{
    public $max;

    public function __construct($max = 255)
    {
        $this->max = $max;
    }
}

你可以像$this->max这样的pass方法访问它

并启动这样的价值:

new CustomValidationRule(255)
© www.soinside.com 2019 - 2024. All rights reserved.