重构和优化Laravel验证规则(required_with)



我有一个表单,它的输入数量根据用户的行数而灵活。

| row |  FullName  |  Phone    |    Email   |
|------------------------------------------ |
|  1  |    Alex    |     06    |   a@a.com  |
|------------------------------------------ |
|  2  |    Bob     |    968    |            |
|------------------------------------------ |
|  3  |            |           |   j@j.com  |
---------------------------------------------
_____________________
| Add new User Button |
---------------------

当填写每个用户的任何输入时,需要这些用户的其他输入。

例如:第2行有错误,因为填写了全名和电话,但电子邮件是空的

第3行出现错误,因为全名和电话为空,但电子邮件已填充。

所以我写了验证规则如下:

$validator = Validator::make($request->all(), [
'User.*.FullName' => 'required_with:User.*.Phone | required_with:User.*.Email',
'User.*.Phone' => 'required_with:User.*.FullName | required_with:User.*.Email',
'User.*.Email' => 'required_with:User.*.FullName | required_with:User.*.Phone',
], $this->messages());

每个用户的输入参数数量很大,我在这里列出了3种情况(全名、电话、电子邮件(。

如果我像上面那样编写验证,代码就会很混乱。如何重构这些代码,或者为这些类型的验证提供任何想法?

就像我在这条消息中说的那样;

Laravel有一个很棒的表单请求验证系统。我强烈建议使用它,而不是在控制器中使用所有验证逻辑。

这个场景看起来和我之前回答的问题一样。当我的验证像这样复杂时,我个人认为最好使用表单请求。因为它更容易阅读和管理。

事实上,你不需要这样写你的规则;

required_with:User.*.Phone | required_with:User.*.Email

required_with可以取多个参数,当其中一个参数不为空时需要;

'User.*.FullName' => 'required_with:User.*.Phone,User.*.Email',

注意:如果两个参数都不为空,则检查required_with_all。

相关内容

  • 没有找到相关文章

最新更新