MethodNotAllowedHttpException в строке RouteCollection.php 200: - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть эти объявления маршрутов здесь

//Skill
Route::get('skill','SkillController@index');
Route::get('skill/create','SkillController@create');
Route::post('skill/store','SkillController@store');
Route::get('skill/{id}','SkillController@show');
Route::get('skill/{id}/edit', 'SkillController@edit');
Route::post('skill/{id}/update','SkillController@update');
Route::delete('skill/{id}/destroy','SkillController@destroy');

С этими маршрутами я могу удалить штраф на локальном.

Когда я пытался удалить на производстве, я продолжал получать

enter image description here

Я точно знаю, у меня была эта строка

Route :: delete ('skill / {id} / destroy','SkillController @ destroy');

  • Local и Prod имеют одинаковую кодовую базу.
  • Local = Mac OS X
  • Prod = Ubuntu Server

Что я пропустил?

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Маршрут запускается из формы ... Да? Ваш метод формы должен быть POST, а не DELETE, а затем вы должны добавить скрытый ввод, чтобы он работал как DELETE маршрут, что поможет вам поддерживать Route::delete().
Ваша форма должна выглядеть так:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="DELETE">

И ваш маршрут:

Route::delete('skill/{id}/destroy','SkillController@destroy');

Прочитайте https://laravel.com/docs/5.7/routing#form-method-spoofing для более глубокого понимания.

0 голосов
/ 12 сентября 2018

Когда вы записали свой запрос в адресную строку браузера, он должен быть GET или POST. Вот почему вы получили ошибку.

MethodNotAllowedHttpException: это означает, что маршрут правильный, но метод ошибочный. Вы использовали метод POST - этот метод является автоматическим, если вы используете браузер. Но вам нужен метод DELETE.

Чтобы использовать метод DELETE, вы должны использовать клиент API. PhpStorm имеет встроенный API-клиент API. Документы клиента PHPStorm RESTApi enter image description here

Но! Для меня лучше всего использовать Почтальон ! Почтальон отправка запросов документов

0 голосов
/ 12 сентября 2018

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

Часто веб-серверы будут настроены на блокировку чего-либо, кроме GET и POST, поскольку 99% времени они все, что нужно, и в прошлом были проблемы с приложениями, предполагавшими, что запросы были одним из этих двух.

Вы можете попробовать .htaccess с

<Limit GET POST PUT DELETE>
 Allow from all
</Limit>

(я не специалист по apache, это может быть не совсем правильно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...