2016-01-21 58 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