tiger9810 / Laravel-Chirper

0 stars 0 forks source link

削除機能の追加 #11

Open tiger9810 opened 1 year ago

tiger9810 commented 1 year ago

Routingにdeleteを追加する(Route)

web.php(参考:削除機能の追加)

Route::resource('chirps', ChirpController::class)
    ->only(['index', 'store', 'edit', 'update', 'destroy'])
    ->middleware(['auth', 'verified']);

ChirpsControllerにdeleteメソッドの追加(Controller)

    public function destroy(Chirp $chirp): RedirectResponse
    {
        $this->authorize('delete', $chirp);

        $chirp->delete();

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

Authorしか削除できないようにする

app/Policies/ChirpPolicy.php

    public function delete(User $user, Chirp $chirp): bool
    {
        return $this->update($user, $chirp);
    }

メソッドのロジックを繰り返すのではなく、メソッドからメソッドをupdate呼び出すことで同じロジックを定義できます。Chirp を更新する権限のある人は誰でも、Chirp を削除する権限も与えられるようになります。

Viewに削除ボタンを追加する

  <form method="POST" action="{{ route('chirps.destroy', $chirp) }}">
      @csrf
      @method('delete')
      <x-dropdown-link :href="route('chirps.destroy', $chirp)" onclick="event.preventDefault(); this.closest('form').submit();">
          {{ __('Delete') }}
      </x-dropdown-link>
  </form>