Open tiger9810 opened 1 year ago
web.php(参考:削除機能の追加)
web.php
Route::resource('chirps', ChirpController::class) ->only(['index', 'store', 'edit', 'update', 'destroy']) ->middleware(['auth', 'verified']);
public function destroy(Chirp $chirp): RedirectResponse { $this->authorize('delete', $chirp); $chirp->delete(); return redirect(route('chirps.index')); }
app/Policies/ChirpPolicy.php
public function delete(User $user, Chirp $chirp): bool { return $this->update($user, $chirp); }
メソッドのロジックを繰り返すのではなく、メソッドからメソッドをupdate呼び出すことで同じロジックを定義できます。Chirp を更新する権限のある人は誰でも、Chirp を削除する権限も与えられるようになります。
<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>
Routingにdeleteを追加する(Route)
web.php
(参考:削除機能の追加)ChirpsControllerにdeleteメソッドの追加(Controller)
Authorしか削除できないようにする
app/Policies/ChirpPolicy.php
メソッドのロジックを繰り返すのではなく、メソッドからメソッドをupdate呼び出すことで同じロジックを定義できます。Chirp を更新する権限のある人は誰でも、Chirp を削除する権限も与えられるようになります。
Viewに削除ボタンを追加する