2016-11-09 24 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'); 

我現在的問題是,如何使用(例如)v::intVal()驗證數組options

也許我只是監督如何做到這一點。感謝您的時間。

乾杯, 帕特里克

回答

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

乾杯, 帕特里克