0

我有一个只有字段的表单:

  • 问题
  • 选择

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

我只需要验证这些不是空的,所以我尝试了:

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

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

4

1 回答 1

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

于 2018-08-14T12:08:22.770 回答