有时用户可以发送一些丢失的键/值对。因此,在这种情况下,我需要验证可选密钥是否存在。
用户传记是一个可选字段。如果用户将其留空,我不希望将其发布。
v::key('biography', v::optional(v::stringType()->length(10, 1000)))
abode代码验证传记是否为空或空,如果发布的对象不包含传记密钥它会引发异常,因为验证者期望传记。我找不到检查“密钥是否存在继续验证链”的方法;我可以在验证之前将未存在的密钥添加到已发布的数据中,但我相信在库中有更好的方法可以执行此操作。
我正在寻找一个应该这样的解决方案:
v::key('biography', v::keyExist(v::optional(v::stringType()->length(10, 1000))))
答案 0 :(得分:1)
关键州的文件:
第三个参数使密钥存在可选:
v::key('lorem', v::stringType(), false)->validate($dict); // true
即如果“lorem”不存在,验证将不会应用StringType验证。
答案 1 :(得分:0)
您可以根据情况使用OneOf验证程序。
$response = v::key('biography', v::oneOf(
v::stringType()->length(10, 1000),
v::nullType()
))->validate($author);
如果您尝试验证此值:
$author = [];
或这个:
$author = [
'biography' => 'testtesttest'
];
您将获得true
,否则,如果您尝试验证此密码:
$author = [
'biography' => 'small'
];
您将得到false
(字符串长度不在10到1000之间)。