2016-11-09 10 views
1

Я использовал 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()?

Возможно, я только что наблюдал за тем, как это осуществить. Спасибо за ваше время.

Приветствия, Patrik

ответ

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'); 

Приветствия, Patrik