Laravel验证规则有时默认为否吗?

问题描述

如果您在Laravel中创建验证规则,但忽略了必需而只是使用,请说出电子邮件规则。它默认为什么?

例如

$request->validate([
    'email' => 'email'
]);

这些验证规则是否相等?

$request->validate([
    'email' => 'sometimes|email'
]);

// vs

$request->validate([
    'email' => 'email'
]);

很抱歉,如果以前已经回答过。我尽了最大的努力来搜索类似的问题,但是我可能使用了错误的单词(不确定如何在Google / Stack Overflow搜索中使用该短语)。

解决方法

for c in range(3,1000):
    for b in range(2,1000-c-1):
        for a in range(1,1000-c-b):
            if a**2 + b**2 == c**2 and a + b + c == 1000:
                print(a * b * c)

这将始终for c in range(3,1000): c2 = c**2 for b in range(2,1000-c-1): a = 1000-c-b if a**2 + b**2 == c2: print(a * b * c) # exit the loops 键(即使为空)验证为有效的$request->validate([ 'email' => 'email' ]); 格式。

email

会验证email如果键在$request->validate([ 'email' => 'sometimes|email' ]); 中存在。


所以区别在于,使用email仅在$request->all()对象包含它的情况下才对其进行验证,否则它将始终针对该密钥进行验证。

如果我可以简化一下,我有时会说,仅当请求中显示该字段时,才应用其余的验证规则。想象一下,有时就像一个if语句,该语句在应用任何规则之前检查请求/输入中是否存在该字段。

将它们包裹起来可能是一件乏味的事情,但这是一些示例:

sometimes
,

我个人从未使用过sometimes规则。根据文档:

https://laravel.com/docs/7.x/validation#conditionally-adding-rules

您可能希望仅在输入数组中存在该字段时才对该字段运行验证检查。要快速完成此操作,请将有时会使用的规则添加到您的规则列表中

如果我理解正确,那么这在很大程度上取决于您的前端实现。如果您使用带有<form>输入的常规html name="email"元素,则提交表单后,它将立即发送一个名为email的密钥。

因此,为了不发送此类密钥,您必须将其从表单中删除,或者手动进行HTTP请求(因此不理会任何HTML表单),以便您可以决定自己的输入字段。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...