2016-01-21 1 views
4

Я разрабатываю приложение для викторины в Laravel, и у меня есть некоторые проблемы с array validation. Я использую AngularJS на передней панели, и я использую ajax для отправки объектов в API Laravel. Это пример 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"}]} 

викторина имеет название, категорию и вопросы. Каждый вопрос должен иметь question_text и ответы. Каждый ответ имеет тип, информацию и is_correct.

Вот подтверждение я писал:

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

     ]); 

название и категория валидация работает отлично. Третья валидация («вопросы =>« требуется ») отлично работает. Остальные валидации ничего не делают. Например,

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

проходит проверку, хотя массив вопросов есть элемент, который не имеет ответы или поле question_text. Как работает проверка массива?

ответ

3

Это известная проблема.

Существует открытый запрос на pull, который обращается к «необходимой» проверке. Вы можете следовать этому pull request here.

Существует также второй запрос на вытягивание, который устраняет проблему с помощью «необходимых_ *» валид (required_with и т. Д.). Вы можете следовать этому pull request here.

+0

Спасибо за ответ. Я никогда ничего не вытаскивал из github, поэтому я понятия не имею, как это сделать. Можете ли вы дать мне несколько указаний? У меня установлен git (bash). – Dvorog

+0

@Kockar Это не то, что вы делаете. В какой-то момент, если это приемлемо, Тейлор объединит запрос на растягивание в Laravel, пометит новую версию, а затем вам нужно будет запустить «композиторское обновление», чтобы получить последнюю версию Laravel. Вам просто нужно следить за запросами на тяну, чтобы увидеть, когда они объединены, поэтому вы знаете, когда нужно обновлять. – patricus

+1

@patricius благодарит за информацию. – Dvorog

 Смежные вопросы

  • Нет связанных вопросов^_^