Маршрут Laravel 8.0::post отображает пустую страницу, и тот же маршрут работает с get

#php #laravel #post #routes

Вопрос:

Я новичок в Ларавеле. У меня есть эта форма :

 <form action="{{ route('foo.store', ['idFoo' => $foo->id]) }}" method="POST" accept-charset="UTF-8">
 

и этот маршрут :

 Route::post('/foo/store/{idFoo}', [AppHttpControllersFooController::class, 'fooStore'])->name('foo.store');
 

Кроме того, я добавил @csrf, это не проблема.

Итак, когда используется этот маршрут, он отображает пустую страницу , но если я изменю «опубликовать» на «получить», он отлично работает (кстати, метод FooStore-это просто dd(«тест»)). В режиме «post» он даже не будет смотреть, какой контроллер я использую или что-то в этом роде. Сообщение о маршруте = пустая страница. Никаких ошибок, ничего.

РЕДАКТИРОВАТЬ : Я выяснил, что проблема не в маршруте, а в действии формы «опубликовать». Когда действие «опубликовать», оно отображает пустую страницу, независимо от типа маршрута. Но это прекрасно работает в действии «получить».

Комментарии:

1. вы, вероятно, пропустили @csrf в форме

2. Нет, @csrf там есть.

3. Я вижу, что у вас нет никаких ошибок на странице, но вы получаете что-нибудь в журналах? Убедитесь, что в вашем .env файле есть APP_ENV=local и APP_DEBUG=true .

4. Что выводится на network вкладке инструментов разработки для браузера?

5. У My .env уже есть APP_ENV=локальный и APP_debug=true.

Ответ №1:

попробуйте это

     <form action="{{ url("/foo/store")}}/{{$foo->id}} method="POST" accept-charset="UTF-8">
@csrf 
</form>
 

надеюсь, это сработает

Комментарии:

1. Этого не произошло. В любом случае, спасибо.

Ответ №2:

Попробуйте выполнить эту команду:

 php artisan route:cache
 

Комментарии:

1. Пожалуйста, добавьте дополнительные сведения, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.

2. Я так и сделал, но всегда одна и та же пустая страница.

3. были ли у вас какие-либо другие маршруты, которые разрешились бы в /foo/store/* над вашим почтовым маршрутом?

Ответ №3:

РЕШЕНО : Это самая странная вещь. По неизвестной причине измените

 Route::post('/foo/store/{idFoo}'
 

в

 Route::post('/foo/store/bar/{idFoo}'
 

решил проблему. Я понятия не имею, почему.