Laravel 5.6 ERR_TOO_MANY_REDIRECTS по запросу GET

У меня есть собственный класс запросов, который занимается проверкой формы. Эта форма использует «GET» и отфильтровывает все результаты, которые пользователь может видеть на странице.

Мое правило для даты начала:

'date_start' => 'nullable|date|required_with:date_end',

вызывает сообщение:

ERR_TOO_MANY_REDIRECTS

Мой контроллер выглядит так:

public function index (ApprovedSubmissionsFilterRequest $request)
{

    ...

Я считаю, что это связано с тем, что при сбое проверки он отправляет запрос GET обратно в метод индекса, который еще раз не проходит проверку и перенаправляет обратно в метод индекса и т. д. и т. д.

Как избежать этой петли? Я не хочу использовать запрос POST вместо GET.

Вот мой маршрут:

Route::get('formSubmission', 'FormSubmissionController@index')
 ->name('formSubmission.index');

Спасибо.

ПРИМЕЧАНИЕ (редактировать):

Не все ошибки проверки вызывают это - кажется, что проблема только в required_with. Кто-то упоминал об этом ранее здесь.


person party-ring    schedule 03.05.2019    source источник
comment
ничего общего с проверкой, это связано с URL-адресом, к которому вы пытаетесь получить доступ, когда он имеет ошибку   -  person abr    schedule 03.05.2019
comment
Возможно, вам потребуется настроить обработчик, см.: github.com/laravel/framework/blob/5.6/src/Illuminate/Foundation/. Или настройте ответ, данный ValidationException: github.com/laravel/framework/blob/5.6/src/Illuminate/Foundation/   -  person adam    schedule 03.05.2019


Ответы (1)


Я попробовал ваш код в своем проекте и не могу воспроизвести проблему. Итак, вы действительно используете правильное правило проверки, потому что из документов required_with вступает в силу только в том случае, если другое поле, которое вы пытаетесь проверить, существует в запросе. Таким образом, в вашем случае date_start не должно присутствовать в запросе, а date_end должно существовать, чтобы эта проверка имела место:

required_with:foo,bar,...

Проверяемое поле должно присутствовать и не быть пустым только в том случае, если присутствует какое-либо из других указанных полей.

  • Также из проблемы github, о которой вы упомянули, вы можете отладить в обработчике исключений, что происходит, когда выбрасывается ValidationException

  • Ваше последнее замечание: вы пробовали со всеми правилами проверки, кроме этого, если оно пройдет?

person nakov    schedule 03.05.2019
comment
Да, я пытался заставить сообщение появиться, введя только 1 из 2 дат. Другие правила проверки работают успешно (например, если я изменю nullable на required, он перенаправит обратно с сообщением об ошибке), поэтому я больше всего запутался. Я посмотрю обработчик исключений, но мне это кажется странным. Спасибо, что вернулись ко мне. - person party-ring; 03.05.2019
comment
я бы порекомендовал создать собственный класс Rule и написать свою собственную логику! - person Achraf Khouadja; 03.05.2019