Проверка подмассивов с помощью Respect/Validation?

Я успешно использовал https://github.com/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 ответ

Решено с помощью alganet на 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');

Ура, Патрик

Другие вопросы по тегам