Leo5878
@Leo5878
Улыбчивай, люблю учить и учиться

Почему в laravel данные не проходят через валидацию?

Ситуация следующая. Прилетает json отправленный через fetch.
Json валидный, все ок, но валидацию не проходит, хотя контроллер вызывается и данные в БД кладутся (там в коде ниже метод). Чтобы убедиться в запуски контроллера, я вернул себе dd и он вернулся.
Не один из следующих вариантов не работает
Не общайте внимания, что данные для проверка отличаются, нужно было хоть как-то проверить.

public function validator(Request $request)
    {

        $validator = Validator::make($request->all(), [
            'first_name' => 'first_name|unique:users',
            'last_name' => 'last_name|unique:users',
        ]);
        
        $this->validate($request, [
            'first_name' => 'required|unique:posts|max:255',
            'last_name' => 'required', //required - обязательно для заполнения
            'phone' => 'required|unique:user|min:11|max:11',
            'document_number' => 'required|unique:user|min:10|max:10',
            'password' => 'required|min:8',
        ]);
}


Делал так: https://laravel.com/docs/5.0/validation#controller...
Вот так: https://laravel.com/docs/5.0/validation#form-reque...

Это был однимим из первых вариантов:

$this->validate($request, [
            'first_name' => 'required|unique:posts|max:255',
            'last_name' => 'required',
            'phone' => 'required|unique:user|min:11|max:11',
            'document_number' => 'required|unique:user|min:10|max:10',
            'password' => 'required|min:8',
]);

Как провести валидацию данных?
Мне необходимо вернуть json с массивом ошибок, в случае если данные валидацию не прошли. Сейчас они проходят в любом случаи
  • Вопрос задан
  • 546 просмотров
Пригласить эксперта
Ответы на вопрос 2
Leo5878
@Leo5878 Автор вопроса
Улыбчивай, люблю учить и учиться
Для всех мучеников Laravel)
Проверьте, как вы отправляйте запрос. Потому что моя проблема была в том, что я не поставил
'Accept': 'application/json'

Вот так должен выглядить запрос:
И в api, в роуте не надо писать /api, в laravel, а в fetch надо!
fetch("/api/register", {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json;charset=utf-8',
            'Accept': 'application/json'
        },
        body: json
}
Ответ написан
Комментировать
pLavrenov
@pLavrenov
Разработка сайтов
$request->validate()

Лучше не мучаться вот с этим всем, а использовать пакет laravel-actions
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы