編集

【show.blade.php
   <h1>
   <span>{{ $post->title }}</span>
   <a href="{{ route('posts.edit', $post) }}">[Edit]</a>
  </h1>

【edit.blade.php
<form method="post" action="{{ route('posts.update', $post) }}">
  @method('PATCH')

<input type="text" name="title" value="{{ old('title', $post->title) }}">
<textarea name="body">{{ old('body', $post->body) }}</textarea>

【Controller.php
  public function edit(Post $post)
    {
        return view('posts.edit')
            ->with(['post' => $post]);
    }

  public function update(Request $request, Post $post)
    {
        $request->validate([
            'title' => 'required|min:3',
            'body' => 'required',
        ], [
            'title.required' => 'タイトルは必須です',
            'title.min' => ':min 文字以上入力してください',
            'body.required' => '本文は必須です',
        ]);

        $post->title = $request->title;
        $post->body = $request->body;
        $post->save();

        return redirect()
            ->route('posts.show', $post);
    }

【routes/web.php
 Route::get('/posts/{post}/edit', [PostController::class, 'edit'])
    ->name('posts.edit')
    ->where('post', '[0-9]+');

 Route::patch('/posts/{post}/update', [PostController::class, 'update'])
    ->name('posts.update')
    ->where('post', '[0-9]+');

参考:ドットインストール『Laravel 8入門 CRUD処理編』