2015-05-04 88 views
0

我有一個輸入數組,我想輸出每個特定索引的錯誤,所以如果我的$input[0]$input[1]遇到錯誤,他們應該顯示,而其他輸入可以說$input[2]沒有遇到錯誤,那麼它不應該顯示:Laravel:顯示輸入數組特定索引的錯誤消息

mmad_bonus_type可能會讓你感到困惑,因爲我使用它的電子郵件。我只是使用電子郵件驗證規則進行測試。

$length = $input['length']; 

$rules = array(); 

for($i = 0, $c = $length; $i < $c; $i++){ 
    $rules['mmad_bonus_type'][$i] = 'email'; 
} 

$validator = Validator::make($input, $rules, $message); 

if($validator->fails()){ 
    return Response::json($validator->messages()); 
} 
print_r($rules); 

赫雷什的我的print_r輸出:

[mmad_bonus_type] => Array 
    (
     [0] => email 
     [1] => email 
     [2] => email 
     [3] => email 
    ) 

如果我跑的代碼只對mmad_bonus_type輸入輸出單錯誤。

這裏是我的輸入的var_dump:

array(11) { 
    ["length"]=> 
    string(1) "2" 
    ["mtype"]=> 
    string(0) "" 
    ["startfrom"]=> 
    string(0) "" 
    ["endfrom"]=> 
    string(0) "" 
    ["mmad_bonus_type"]=> 
    array(1) { 
    [0]=> 
    string(0) "" 
    } 
    ["mmad_total_wins"]=> 
    array(2) { 
    [0]=> 
    string(0) "" 
    [1]=> 
    string(0) "" 
    } 
    ["mmad_starting_date"]=> 
    string(0) "" 
    ["mmad_starting_time"]=> 
    string(0) "" 
    ["mmad_ending_date"]=> 
    string(0) "" 
    ["mmad_ending_time"]=> 
    string(0) "" 
    ["_token"]=> 
    string(40) "ry0o35m0pP6xBF5N9YoXEUtMzGn50U36caJ4W37E" 
} 
+0

你可以編輯你的問題,包括'var_dump($ input);'? – patricus

回答

1

驗證器使用array_dot符號用於陣列的密鑰。例如,如果您有像<input type="text" name="user[name]" />這樣的輸入,那麼您的驗證規則將具有密鑰'user.name'。

相同的格式也適用於數字索引。所以,如果,例如,你有:

<input type="text" name="mmad_bonus_type[]" /> 
<input type="text" name="mmad_bonus_type[]" /> 
<input type="text" name="mmad_bonus_type[]" /> 

那麼你的驗證規則將是:

$rules = array(
    'mmad_bonus_type.0' => 'email', 
    'mmad_bonus_type.1' => 'email', 
    'mmad_bonus_type.2' => 'email', 
); 

在你的情況,我假設你有mmad_bonus_type輸入,數字索引的數組,所以你可能正在尋找類似的東西:

for($i = 0, $c = $length; $i < $c; $i++){ 
    $rules['mmad_bonus_type.'.$i] = 'email'; 
} 
+0

我也嘗試之前,但如果我去到這裏print_r的規則就行的事工作是輸出 [mmad_bonus_type.0] =>電子郵件 [mmad_bonus_type.1] =>電子郵件 – frustratedprogrammer

+0

我通過jQuery的加我輸入的名稱順便一提。所以在你的例子中,而不是mmaed_bonus_type [],mmad_bonus_type [0]對我有一個默認值,它是從0開始到輸入長度的索引。 – frustratedprogrammer

+0

@frustratedprogrammer如果'mmad_bonus_type [0]'的值是空的(如你的var_dump所示),那麼'email'的簡單驗證規則會通過(如果該值不是必需的,那麼空字符串是有效的)。作爲讓你順利進行的測試,請將驗證規則更改爲「required | email」。 – patricus