ошибка метода обновления (метод POST не поддерживается) в laravel - PullRequest
0 голосов
/ 29 марта 2020

Я хочу создать метод обновления, и это код:

Route::get("/allProducts/edit/{id}","AllproductController@edit")->name('Allproduct.edit');
Route::post("/allProducts/update/{id}","AllproductController@update")->name('Allproduct.update');
<form class="form-horizontal tasi-form" method="post" enctype="multipart/form-data"
                      action="{{ route('allProducts.update' , [ 'id'=>$allproduct->id ]) }}">
                    {{ csrf_field()}}

  public function update(Request $request, $id)
    {
       $data = Allproduct::find($id);

        $data->name = $request->name;
        $data->save();

        return redirect(route('allProducts.index'));
    }

, когда я нажимаю кнопку отправки, он показывает мне:

" Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD, PUT, PATCH, DELETE "error!

В чем проблема?

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Ваши имена маршрутов не совпадают.

в маршрутах: имя (' Allproduct .update');

в форме: allProducts .update

Кроме того, вы всегда можете проверить название маршрутов с помощью команды консоли:

php artisan route:list

, если вы хотите использовать метод PUT:

вы можете изменить метод в маршрутах:

Route :: post to Route :: put

и добавить следующий в форме:

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

ИЛИ

@method('PUT') 

это если ваша laravel версия 6, а если ваша версия другая, проверьте правильный способ использования метода PUT в формах по адресу laravel .com / docs / 6.x / routing с вашей версией.

0 голосов
/ 29 марта 2020

Как сказано здесь

HTML формы не поддерживают действия PUT, PATCH или DELETE. Таким образом, при определении маршрутов PUT, PATCH или DELETE, которые вызываются из формы HTML, вам необходимо добавить в форму скрытое поле _method. Значение, отправленное с полем _method, будет использоваться в качестве метода HTTP-запроса:

Таким образом, ваша форма должна выглядеть следующим образом:

<form class="form-horizontal tasi-form" method="post" enctype="multipart/form-data" action="{{ route('Allproduct.update' , [ 'id'=>$allproduct->id ]) }}"> @csrf @method('PUT')

Вы имели опечатка в названии вашего маршрута, и в нем отсутствовало поле method.

Измените маршрут на следующий:

Route::put("/allProducts/update/{id}","AllproductController@update")->name('Allproduct.update');

Это будет работать, но я сильно рекомендуем прочитать laravel соглашения об именах , а затем изменить имя вашего контроллера и модели на AppProductController, AppProduct.

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