尊重验证:当表单具有多个具有相同名称的字段时,正确的验证规则是什么?

时间:2018-08-06 00:17:25

标签: php validation respect-validation

我有一个仅包含字段的表单:

  • 问题
  • 选择

选择是一个数组,因为问题不仅仅包含答案,而且用户可以根据需要添加任意数量。

我只需要验证它们是否为空,就可以尝试:

$validation = $this->c->validator->validate($request, [
            'question' => v::notEmpty(),
            'choice[]' => v::ArrayVal()->each()->notEmpty()
        ]);

但是它不允许我保存任何条目。如果我将choice []保留为“ choice”,它将验证每个条目。我认为规则一定是错误的。

1 个答案:

答案 0 :(得分:1)

您可以使用KeySet验证器:

$response = v::keySet(
    v::key('question', v::notEmpty()),
    v::key('choice', v::arrayVal())
)->validate($request);

在使用给定值的情况下:

$request = [
    'question' => 'What is your first name?',
    'choice' => []
];

验证返回true

在使用给定值的情况下:

$request = [
    'question' => 'What is your first name?',
    'choice' => ''
];

验证返回false