使用Respect / Validation验证子数组?

时间:2016-11-09 16:19:22

标签: php arrays validation respect-validation

我已成功使用Respect/Validation作为我的普遍关注。

但是现在我正在验证某种形式的输入,其中用户可以检查多个复选框,并且数据是通过数组发送的。 表单看起来像这样:

<form method="post" action="">
    <input type="text" name="firstname">
    <input type="text" name="lastname">

    <input type="checkbox" name="options[]" value="1">
    <input type="checkbox" name="options[]" value="2">
    <input type="checkbox" name="options[]" value="3">

    <button type="submit">Send</button>
</form>

所以,我的后期数据将如下所示:

Array
(
    [firstname] => Peter
    [lastname] => Parker
    [options] => Array
        (
            [0] => 1
            [1] => 3
        )
)

我构建了一个有效的验证规则:

<?php
//used in class, so "use Respect\Validation\Validator AS v;"

$validReq = v::create()
    ->key('firstname', v::stringType()->length(1, 32))
    ->key('lastname', v::stringType()->length(1, 32))
    ->key('options', v::optional(v::arrayType()))
    ->setName('valid request');

我现在的问题是,如何使用(例如)options验证数组v::intVal()

也许我只是监督如何实现这一目标。谢谢你的时间。

干杯, 帕特里克

1 个答案:

答案 0 :(得分:1)

alganet over at github的帮助下解决。

这可以使用each()

来完成
<?php    
$validReq = v::create()
    ->key('firstname', v::stringType()->length(1, 32))
    ->key('lastname', v::stringType()->length(1, 32))
    ->key('options', v::optional(v::arrayType()->each(v::intVal())))
    ->setName('valid request');

干杯, 帕特里克