如何在Laravel 8.x中将其他参数传递给验证器->后函数?



我使用的是Laravel 8.x版本。

正如我们所知,我们还可以附加回调,以便在验证完成后运行。这使我们能够轻松地执行进一步的验证,甚至可以将更多的错误消息添加到消息集合中。我们可以在validator实例上调用after方法:

$validator = Validator::make(...);
$validator->after(function ($validator) {
if ($this->somethingElseIsInvalid()) {
$validator->errors()->add(
'field', 'Something is wrong'
);
}
});
if ($validator->fails()) {
//
}

但我想在这个after函数中使用$customVariable,比如:

$validator = Validator::make(...);
$customVariable = 'not happy';
$validator->after(function ($validator, $customVariable) {
if ($this->somethingElseIsInvalid()) {
$validator->errors()->add(
'field', 'Something is wrong because you are ' . $customVariable
);
}
});
if ($validator->fails()) {
//
}

有人可以建议我如何在$validator->after()函数中传递和使用自定义变量/参数吗?谢谢

您可以使用use关键字(docs(从父作用域继承变量。像这样的东西应该起作用:

$validator = Validator::make(...);
$customVariable = 'not happy';
$validator->after(function ($validator) use ($customVariable) {
if ($this->somethingElseIsInvalid()) {
$validator->errors()->add(
'field', 'Something is wrong because you are ' . $customVariable
);
}
});
if ($validator->fails()) {
//
}

最新更新