2016-01-21 84 views
4

我正在Laravel開發一個測驗應用程序,並且我在array validation中遇到了一些問題。我在前端使用AngularJS,並使用ajax將對象發送到Laravel API。 這是一個示例JSON對象:Laravel中的數組驗證5.2

{"name":"TestName","category":"TestCategory","questions":[{"answers":[{"type":"radio","information":"Test answer two","is_correct":false,"$$hashKey":"object:28"},{"type":"radio","information":"Test answer One","is_correct":false,"$$hashKey":"object:22"}],"$$hashKey":"object:13","question_text":"Test Question One"}]} 

測驗有名稱,類別和問題。每個問題都必須有問題和答案。每個答案都有類型,信息和is_correct。

這裏是我寫的驗證:

$this->validate($request, [ 
      'name' => 'required|min:3', 
      'category' => 'required|min:2', 
      'questions' => 'required', 
      'questions.*.question_text' => 'required|min:5', 
      'questions.*.answers' => 'required' 

     ]); 

名稱和類別驗證工作的罰款。第三個驗證('questions =>'required')也可以正常工作。其餘的驗證無效。 例如,

{"name":"SomeName","category":"SomeCategory","questions":[{}]} 

通過了驗證,雖然問題陣列具有不具有答案或QUESTION_TEXT字段的元素。數組驗證如何工作?

回答

3

這是一個已知問題。

有一個解決「必需」驗證的公開拉取請求。你可以關注這個pull request here

還有第二個拉取請求用「required_ *」驗證(required_with等)來解決問題。你可以按照pull request here

+0

感謝您的回答。我從來沒有從github上拉東西,所以我不知道該怎麼做。你能給我一些指導嗎?我有git(bash)安裝。 – Dvorog

+0

@Kockar這不是你做的事情。在某些時候,如果可以接受的話,泰勒會將拉取請求合併到Laravel中,標記新版本,然後您需要運行一個'composer update'來獲取最新的Laravel版本。你只需要關注pull請求,看看它們何時合併,以便知道何時更新。 – patricus

+1

@patricius非常感謝您的信息。 – Dvorog