2017-06-16 38 views
0

我在窗体上有一堆输入,并且所考虑的字段有各种验证要求。为了简化,我创建了一个类比:如何创建所需的字段Laravel验证?

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

我最初的猜测是:A. * =>'required_with:B。 ,C. | required_if:D,0' 但这并不实际。

我很自定义验证,所以如果需要一个自定义验证器的分步方法,你能提供一个完整的代码吗?

谢谢!

回答

0

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

验证时请出示

在某些情况下,你可能希望对现场运行验证检查只有在该领域存在输入数组英寸为了快速实现这一点,加上有时裁定您的规则列表:

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

在上面的例子中,电子邮件字段将仅在其存在于$数据数组中进行验证。

复杂的条件验证

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

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

假设我们的Web应用程序是针对游戏收藏家的。如果一位游戏收藏家注册我们的应用程序,并且他们拥有100多款游戏,我们希望他们解释为什么他们拥有这么多游戏。例如,也许他们经营一家游戏转售店,或者他们只是喜欢收藏。为了有条件地添加这个需求,我们可以在Validator实例上使用有时候的方法。

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

所以将这项工作: '$ V =验证::使($的数据,[ ]); //无规则provided' '$ V->有时( 'A', '需要',函数($输入){ 如果($输入 - > d == 1){ 返回假; }; if(($ input-> B!= null)||($ input-> C!= null)){ return true; }; }); ' – Muhammad

+0

找出来的最简单的方法是测试:) –

+0

没有运气,它不起作用:/ – Muhammad

相关问题