尊重验证可选密钥

时间:2018-05-17 12:31:54

标签: php respect-validation

有时用户可以发送一些丢失的键/值对。因此,在这种情况下,我需要验证可选密钥是否存在。

用户传记是一个可选字段。如果用户将其留空,我不希望将其发布。

v::key('biography', v::optional(v::stringType()->length(10, 1000)))

abode代码验证传记是否为空或空,如果发布的对象不包含传记密钥它会引发异常,因为验证者期望传记。我找不到检查“密钥是否存在继续验证链”的方法;我可以在验证之前将未存在的密钥添加到已发布的数据中,但我相信在库中有更好的方法可以执行此操作。

我正在寻找一个应该这样的解决方案:

v::key('biography', v::keyExist(v::optional(v::stringType()->length(10, 1000))))

2 个答案:

答案 0 :(得分:1)

关键州的文件:

  

第三个参数使密钥存在可选:

     

v::key('lorem', v::stringType(), false)->validate($dict); // true

即如果“lorem”不存在,验证将不会应用StringType验证。

请参阅:http://respect.github.io/Validation/docs/key.html

答案 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之间)。