2016-03-14 69 views
0

我有一個表格,我可以添加多達30個選項字段(選項[1],選項[2],...),現在我使用'選項。 '=>'required'規則在請求驗證,但有這個問題有一點問題,如果您提交表單與所有選項字段爲空它顯示長的錯誤信息與每個選項字段所需,但我需要它只顯示一條消息所有選項如:「每個選項字段都是必需的」Laravel陣列驗證,如果至少有一個失敗返回單條消息

任何想法如何使它? 謝謝!

+0

組自定義消息這個領域? –

+0

你的意思是每個選擇字段是必需的?你只有一個選擇30個選項或30個選擇領域? –

+0

他們不是選擇,而是文本輸入(最多可以添加30個),並且它們都是必需的,但我只需要返回一條消息,而不是30x相同的消息。 – allyfai

回答

1

我找到了解決方案。我將它張貼在這裏萬一有人需要它:

基本上,你需要重寫formatErrors方法在你的請求驗證類

protected function formatErrors(Validator $validator) 
{ 
    $errors = parent::formatErrors($validator); 

    // this will remove the keys that have index larger than 0 
    $keys = array_filter(array_keys($errors), function($item) { 
     $parts = explode('.', $item); 

     // you might want to modify this to match your fields, 
     // I had another level of keys 
     if (count($parts) === 3 and is_numeric($parts[1]) and (int)$parts[1] > 0) { 
      return false; 
     } 

     return true; 
    }); 

    $errors = array_intersect_key($errors, array_flip($keys)); 

    return $errors; 
} 
相關問題