2
<form action="{{ route('todo.edit',$todoedit->id,'edit') }}" method="POST" class="container">
        @csrf
        @method('PATCH')
        <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" name="title" value="{{$todoedit->title}}">
        </div>
        <div class="form-group">
        <label for="description">Description</label>
        <input type="text" class="form-control" name="description" value="{{$todoedit->description}}">
        </div>
        <button type="submit" class="btn btn-primary form-control">Update</button>
        </form>

Todo Controller:

    public function edit(Request $request,$id)
    { 
        $todo=Todo::find($id);
        $todo->title=$request->title;
        $todo->description=$request->description;
        $todo->save();
        return redirect(route('todo.index'));
    }

I do not know what seems to be the problem, I am doing the CRUD, everything is working but the Update part is not working, it is giving me the error

The PATCH method is not supported for this route. Supported methods: GET, HEAD.

I have tried everything, @method('UPDATE') and PUT and everything but it does not work

brombeer
  • 8,716
  • 5
  • 21
  • 27
Harout
  • 175
  • 2
  • 3
  • 12

2 Answers2

0

Because you write your update function body in edit method in your controller. Do as below:

    public function update(Request $request,$id)
    { 
        $todo=Todo::find($id);
        $todo->title=$request->title;
        $todo->description=$request->description;
        $todo->save();
        return redirect(route('todo.index'));
    }

and in your edit method just return edit view and pass $todo object to that

Method type of edit is: Get

Method type of update is: Put or Patch

You can see this types with simple run php artisan route:list in your terminal.

Mohammad Hosseini
  • 1,649
  • 1
  • 16
  • 31
0

In Web.php May Work

Route::patch('/todo/edit/{id}', [TodoController::class, 'edit']);

Monirul Islam
  • 178
  • 1
  • 9