Laravel 中“requiredIf”验证的自定义错误消息

nat*_*ral 6 validation laravel laravel-5

我正在开发 Laravel 5.8 项目,并尝试显示使用requiredIf验证规则的验证的自定义验证消息。

我的设置方法如下:

$validation = Validator::make(
    $request->all(),
    [
        ...
        'sum' => [
            Rule::requiredIf(function() use ($request){
                $model = Model::find($request->id);
                return $model->is_special; //returns a boolean value
            }),
            'numeric'
        ],
        ...
    ],
    [
        ...
        'sum.required_if' => 'This cannot be blank',
        'sum.numeric' => 'Must use a number here',
        ...
    ]
);
Run Code Online (Sandbox Code Playgroud)

现在验证工作正常,numeric验证的自定义消息也按预期显示,但我收到的该方法的消息requiredIf()是 Laravel 的默认错误消息。

我也尝试过使用'sum.requiredIf' => '...',但这也不起作用,并且似乎找不到此场景的任何文档或示例。

nat*_*ral 10

我对此进行了一段时间的修改,并注意到为了使其发挥作用,我需要定义

'sum.required' => 'This cannot be blank'

并不是'sum.required_if' => 'This cannot be blank',

不确定这是否是预期的行为或只是一种解决方法,但我的推论是,通过回调,Rule::requiredIf(function() use ($request){...})参数:other:value不会被传递,因此它会退回到required消息传递,我想这是有道理的,因为required_ifrequired不会在同一个:attribute.

希望这对遇到此问题的人有所帮助。