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

#laravel

#laravel

Вопрос:

Я пытаюсь обновить определенные данные с помощью метода post. После отправки формы отображается сообщение об ошибке: метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD .

editpage.blade.php

 @extends('layouts.app')

@section('content')
<div class="container">
    <h3>Update Book</h3>
    <br>
    <form action="update" method="post"  >

        {{csrf_field()}}

        @foreach($array as $fetch)

        <div><input type="hidden" name="id" value="{{$fetch->id}}"></div>
        <div><input type="text" name="name" class="form-control " placeholder="Bookname" value="{{$fetch->name}}" ></div><br>


        <div><textarea name="content" class="form-control" rows="5" placeholder="Description" >{{$fetch->content}}</textarea></div><br>

        <div><input type="text" name="author" class="form-control" placeholder="Author" value="{{$fetch->author}}"></div> <br>

        <div><input type="submit" name="submit" value="Update Book" class="btn btn-success" ></div>
        @endforeach
    </form>
</div>

@endsection
  

Веб-маршрут

 Route::get('/', function () {
    return view('welcome');
});

Route::get('/addbook',function () {
    return view('AddBook');
});

Route::post('/insert',['uses'=>'BookController@insert']);
Route::get('/delete/{id}',['uses'=>'BookController@delete']);
Route::get('/edit/{id}',['uses'=>'BookController@edit']);

``````
Route::post('/update',['uses'=>'BookController@update']);

```````

Route::get('/home',['uses'=>'BookController@index']);

Auth::routes();
  

Комментарии:

1. <form action="/update">

2. @UkraineInMembrane правильно, без косой черты действие добавляется к текущему URL.

Ответ №1:

Существуют такие действия, как update, которые требуют, чтобы метод, отправленный на URL-адрес сервера, был либо ПОМЕЩЕН / ИСПРАВЛЕН (для изменения ресурса)

Попробуйте с этим,

 <form action="{{ route('book.update') }}" method="post"  >
    {{csrf_field()}}
    {{ method_field('PUT') }}

    @foreach($array as $fetch)
       // ...
    @endforeach
</form>
  

Ваш маршрут,

 Route::put('update',['uses'=>'BookController@update', 'as' => 'book.update']);
  

Ваш контроллер

 public function update(Request $request)
{
    // ...
}
  

Надеюсь, это поможет 🙂

Комментарии:

1. 1 за использование метода PUT , хотя я думаю, вам следует объяснить, почему вы используете этот метод вместо POST.