Я пытаюсь передать простой массив объектов JSON в Laravel, и мой валидатор не работает. Я не уверен, что это проблема относительно Postman
или Laravel
самого валидатора.
Передача данных от Postman:
semester:1
academic_year:2
civil_year:2016
course_id:1
periods[0]:{ "id": 2, "starts": '2018-01-01', "end": '2018-06-01' }
Ларавель Валидатор:
Validator::validate($request->all(), [
'semester' => 'integer|between:1,2',
'academic_year' => 'required|integer|between:1,4',
'civil_year' => 'required|integer|between:' . date('Y', strtotime('-5 years')) . ',' . date('Y', strtotime('+5 years')),
'course_id' => 'required|integer|exists:courses,id',
'periods' => 'required|array|between:1,4',
'periods.*' => 'required|json'
]);
Валидатор возвращает:
{
"message": "The given data was invalid.",
"errors": {
"periods.0": [
"The periods.0 must be a valid JSON string."
]
}
}
Что я пробовал
Я попытался передать как raw
запрос от Postman
, но безуспешно:
Кроме того, я попытался вставить заголовки
Accept:application/json
Content-Type:application/json
Я тестировал с помощью почтальона, и проверка не проходит, если я использую одинарные кавычки, как здесь:
{ "id": 2, "starts": '2018-01-01', "end": '2018-06-01'}
Попробуйте использовать двойные кавычки следующим образом:
{ "id": 2, "starts": "2018-01-01", "end": "2018-06-01"}
Это должно пройти.
Я просто добавил две строки
Accept: application/json
Content-Type: application/json
и это работает хорошо.
то чувство, которое вы испытываете, когда гуглите свой вопрос и возвращаетесь к нему спустя месяцы :D