У меня возникла странная проблема с формой POST в Laravel.
При отправке почтового запроса мой Laravel выдает исключение MethodNotAllowedHttpException. Изучив errormessage, я вижу, что Laravel думает, что мой запрос – это запрос GET, которого нет.
При просмотре данных POST и данных GET на странице ошибок Laravel кажется, что они оба пустые. Это немного меня смущает, так как кажется, что происходит какая-то переадресация, HTTP_REFERER на ошибке – это страница, с которой я отправляю сообщения.
У меня была эта проблема раньше, когда создание именованного маршрута решило мою проблему, но я делаю простую CMS, поэтому используются шаблоны для формы, и я не могу использовать именованные маршруты, не позволяя пользователю используйте синтаксис Blade, который является плохой идеей.
Мой маршрут выглядит следующим образом (упрощен до «Hello world»):
Route::post('/signup/add', function(){ echo "Hello world"; });
http://pastebin.com/EsAeyHFx <- Полный route.php
http://pastebin.com/ByHdUFcK <- Моя форма. Ничего необычного, только обычный текст / радиоблок. Нет html или ничего особенного.
Еще более странная часть этого заключается в том, что у меня есть другая форма (форма входа), которая не приводит к такому поведению.
Я смотрел еще несколько вопросов по StackOverflow, но все они, похоже, ошибаются, отправляя данные POST на маршрут GET. Это не мое дело.
Если я изменю маршрут от POST до GET, он отлично работает.
Я также попытался изменить действие формы на GET и использовать скрытое поле _method и установить его post – Без успеха.
Может ли кто-нибудь сказать мне, что происходит с этим Исключением и как его исправить?
ДОБАВЛЕНО: после некоторых экспериментов я узнал, что при использовании стороннего программного обеспечения (например, chrome extension Postman) и отправки запроса POST на страницу он работает как встроенный.
Хорошо, после некоторого копания вокруг, делая формы в jsfiddle, используя jQuery и так далее, я нашел проблему!
У моей формы есть конечная косая черта в атрибуте action, который, предположительно, не разрешен.
Решения заключались просто в том, чтобы изменить мой код на action="/signup/add"
вместо action="/signup/add/
Человек, я чувствую себя глупо …