Я получаю MethodNotAllowedHttpException при отправке формы в laravel
Html-файл
<form method="POST" action="/cards/{{$card->id}}/notes"> <input name="_token" type="hidden" value="{{ csrf_token() }}"/> <textarea name="body" class="form-control"></textarea> <button type="submit">Add Note</button> </form>
routes.php
Route::post('cards/{card}/notes','NotesController@store');
NotesController.php
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class NotesController extends Controller { public function store() { return request()->all(); } }
Убедитесь, что у вас нет маршрута, скажите сообщение « Route::post
с параметром, который находится перед маршрутом, который вы пытаетесь ударить.
Например:
Route::post('{something}', 'SomethingController@index'); Route::post('cards/{card}/notes', 'NotesController@store');
В этом случае, независимо от того, что вы пытаетесь отправить на маршрут карты, он всегда попадает в какой- something
маршрут, потому что {something}
перехватывает cards
как допустимый параметр и запускает SomethingController
. Поместите что- something
маршрутом ниже маршрута карты, и оно должно работать.
MethodNotAllowedHttpException
вызывается, когда не найдено подходящего маршрута (метода и URI), но найден маршрут с соответствующим URI, но не соответствующий методу.
В вашем случае, я думаю, проблема заключается в том, что параметры URI отличаются между маршрутом и контроллером.
Вот две альтернативы, которые вы можете попробовать:
Маршрут :: пост ( 'карты / ноты', 'NotesController @ магазин');
публичный магазин функций ($ card) { return request () -> all (); }
Я попытался решить эту ошибку в просвете, и мне потребовалось довольно много времени, чтобы выяснить проблему. Проблема заключается в самом laravel.
Иногда, если у вас есть другой маршрут, например GET device / {variable}, laravel останавливается в этом первом маршруте …
Итак, что вам нужно сделать, это изменить маршрут POST device
на POST device/add
Эта ссылка очень помогла мне