2016-11-09 4 views
1

私は一般的な関心事として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

パトリックは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'); 

乾杯、 パトリック

関連する問題