如何制作一个需要Laravel验证的字段?

时间:2017-06-16 14:41:19

标签: laravel validation laravel-5

我的表单上有很多输入,正在考虑的字段有各种验证要求。为了简化,我创建了一个类比:

我有输入A,B,C和D.A,B和C都是数组输入。如果存在B和C,则应该需要'A',但如果输入'D'的值为1,即使存在B和C,也不需要'A'。输入“B”和“C”也存在相同的要求。

我最初的猜测是:A。* => 'required_with:B。,C。 | required_if:d,0' 但这并没有真正起作用。

我对自定义验证很糟糕,所以如果需要自定义验证器的逐步方法,请提供完整的代码吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

记录在https://laravel.com/docs/5.4/validation#conditionally-adding-rules

存在时验证

在某些情况下,只有在输入数组中存在该字段时,您可能希望对字段运行验证检查。要快速完成此操作,请将有时规则添加到规则列表中:

$v = Validator::make($data, [
    'email' => 'sometimes|required|email',
]);

在上面的示例中,只有在$ data数组中存在电子邮件字段时才会对其进行验证。

复杂条件验证

有时您可能希望基于更复杂的条件逻辑添加验证规则。例如,您可能希望仅在另一个字段的值大于100时才需要给定字段。或者,仅当存在另一个字段时,您可能需要两个字段才能具有给定值。添加这些验证规则不一定非常痛苦。首先,使用永不改变的静态规则创建Validator实例:

$v = Validator::make($data, [
    'email' => 'required|email',
    'games' => 'required|numeric',
]);

我们假设我们的网络应用程序适用于游戏收藏家。如果游戏收藏家在我们的应用程序中注册并拥有超过100个游戏,我们希望他们解释为什么他们拥有这么多游戏。例如,也许他们经营一家游戏转售店,或者他们只是喜欢收藏。要有条件地添加此要求,我们可以在Validator实例上使用有时方法。

$v->sometimes('reason', 'required|max:500', function ($input) {
    return $input->games >= 100;
});