Подтвердить что ты не робот

МетодNotAllowedHttpException в строке RouteCollection.php 219

Когда я сохраняю сообщение, я получаю эту ошибку

MethodNotAllowedHttpException in RouteCollection.php line 219:

Что может вызвать эту проблему?

routes.php:

Route::get('home', '[email protected]');
Route::get('/', '[email protected]');
Route::get('index', '[email protected]');

Route::get('posts', '[email protected]');
Route::get('post/{slug}/{id}', '[email protected]');
Route::get('posts/sukurti-nauja-straipsni', '[email protected]');
Route::patch('posts/store-new-post', '[email protected]');
Route::get('post/{slug}/{id}/edit', '[email protected]');
Route::patch('posts/{slug}', '[email protected]');


Route::get('tags/{tags}', '[email protected]');
Route::get('categories/{categories}', '[email protected]');

// Authentication routes...
Route::get('auth/login', 'Auth\[email protected]');
Route::post('auth/login', 'Auth\[email protected]');
Route::get('auth/logout', 'Auth\[email protected]');

// Registration routes...
Route::get('auth/register', 'Auth\[email protected]');
Route::post('auth/register', 'Auth\[email protected]');

Я использую Laravel 5.1, и я не могу понять это в течение дня.

4b9b3361

Ответ 1

Поскольку вы устанавливаете метод в пост-обновлении как patch, убедитесь, что откройте свою форму, чтобы использовать этот метод

{!! Form::open(['method' => 'patch']) !!}

Если вы не используете класс Form, вы также можете просто обеспечить скрытый элемент скрытый элемент под _method под форма:

<input name="_method" type="hidden" value="PATCH">

Аналогично, если вы отправляете эти данные через AJAX, просто добавьте ключ _method к полезной нагрузке, установленной на 'PATCH', перед отправкой запроса через POST. Некоторые браузеры (IE 7/8) не поддерживают PATCH HTTP через XMLHttpRequest

Другой вариант - изменить маршрут для приема данных POST:

Route::post('posts/store-new-post', '[email protected]');
Route::post('posts/{slug}', '[email protected]');

Ответ 2

Попробуйте добавить к вам модель: protected $guarded = ['_token'];

Ответ 3

У меня тоже была эта проблема, но в моем случае это оказалось связано с тем, что эти множественные маршруты настроены на одно и то же действие контроллера:

Route::get('/',     '[email protected]');
Route::get('posts', '[email protected]');

Это работало отлично для запросов GET, но я бы поставил свою форму, чтобы представить себе – то есть. Я не указал действие в моей форме – это означало, что если бы я был на /posts, это сработало (так как я установил подходящую конечную точку POST для этого маршрута), но с домашней страницы / он всегда выдавал мне описанное MethodNotAllowedHttpException (потому что для этого не установлен маршрут данных POST). Потребовались годы, чтобы понять, почему форма, казалось, иногда работает, а иногда и нет.

В конце я исправил его, изменив маршрут для / на перенаправление, например:

Route::get('/', function(){
    return redirect('posts');
});

... хотя я предполагаю, что явное указание действия в форме (или установка маршрута POST для / тоже) тоже выполнило бы работу.

Я новичок в Laravel, поэтому могут быть другие подходы, которые лучше, чем любой из вышеперечисленных!

Ответ 4

Перейдите к поставщику /laravel/framework/src/Illuminate/Foundation/Middleware/VerifyCsrfToken.php и добавьте метод маршрута, который вы хотите (POST, GET) в функции isReading().

Надеюсь, это поможет кому-то.

Ответ 5

Проверьте тег формы

<form action="/path/" method="post">

здесь "/путь/" должен быть "/путь", не используйте "/" в конце.

Ответ 6

В моем случае в конце было добавлено "/", что-то вроде: POST/api/clients/Я удалил его и работал: POST/api/clients