blocs/admin: 削除機能のカスタマイズ
blocs/admin: 削除機能のカスタマイズ
自動生成された管理画面の削除機能をカスタマイズする方法を説明します。確認画面の追加や処理前後の制御を調整できます。
前提条件: 自動生成ツールで管理画面を生成済みであること
テンプレートの一覧
| テンプレート名 | 用途 |
|---|---|
| include/show.html | 削除対象の項目を表示するパーツテンプレート |
| show.blocs.html | 削除確認画面のメインテンプレート |
処理フロー
初期状態では モーダル で削除確認・実行を行います(詳しくは No.1.2 / No.5.4)。confirmDestroy / confirmSelect ルートおよび専用確認画面テンプレートは自動生成に含まれません。専用確認画面を使う場合のみ、以下の「パターンB」のフローになります。
★ はオーバーライドによるカスタマイズポイントです。
単一削除フロー
パターンA: モーダル確認(デフォルト)
index
│
▼
show ─── 削除対象の表示(UpdateTrait::show)
├─ getCurrent ★ ............. データ取得
├─ prepareShow ★ ............ 表示データ準備(UpdateTrait)
└─ outputShow ................ 画面表示(UpdateTrait)
│
▼(モーダルで確認)
destroy ─── 削除処理
├─ getCurrent ★ ............. データ取得
├─ validateDestroy ★ ........ 削除データの検証
├─ prepareDestroy ★ ......... 削除データ準備
├─ executeDestroy ★ ......... データ削除
├─ logDestroy ★ ............. ログ記録
└─ outputDestroy ............. 完了処理 → 一覧画面へ
パターンB: 専用確認画面(任意・追加時)
index
│
▼
show ─── 削除対象の表示
├─ getCurrent ★ ............. データ取得
├─ prepareShow ★ ............ 表示データ準備
└─ outputShow ................ 画面表示
│
▼
confirmDestroy ─── 削除確認画面表示
├─ getCurrent ★ ............. データ取得
├─ validateDestroy ★ ........ 削除データの検証
├─ prepareConfirmDestroy ★ .. 表示データ準備
└─ outputConfirmDestroy ...... 確認画面表示
│
▼
destroy ─── 削除処理
├─ getCurrent ★ ............. データ取得
├─ validateDestroy ★ ........ 削除データの検証
├─ prepareDestroy ★ ......... 削除データ準備
├─ executeDestroy ★ ......... データ削除
├─ logDestroy ★ ............. ログ記録
└─ outputDestroy ............. 完了処理 → 一覧画面へ
一括削除フロー(SelectTrait)
パターンA: モーダル確認(デフォルト)
index(チェックボックスで選択)
│
▼(モーダルで確認)
select ─── 選択データ処理(一括削除)
├─ validateSelect ★ ......... 選択データの検証
├─ prepareSelect ★ .......... 選択データ準備
├─ executeSelect ★ .......... 選択データ処理
├─ logSelect ★ .............. ログ記録
└─ outputSelect .............. 完了処理 → 一覧画面へ
パターンB: 専用確認画面(任意・追加時)
index(チェックボックスで選択)
│
▼
confirmSelect ─── 選択確認画面表示
├─ validateSelect ★ ......... 選択データの検証
├─ prepareConfirmSelect ★ ... 表示データ準備
└─ outputConfirmSelect ....... 確認画面表示
│
▼
select ─── 選択データ処理(一括削除)
├─ validateSelect ★ ......... 選択データの検証
├─ prepareSelect ★ .......... 選択データ準備
├─ executeSelect ★ .......... 選択データ処理
├─ logSelect ★ .............. ログ記録
└─ outputSelect .............. 完了処理 → 一覧画面へ
ベースコントローラーのメソッド
単一削除
| 可視性 | メソッド名 | 処理内容 |
|---|---|---|
| public | show | 削除対象の表示(UpdateTrait に定義。show.blocs.html を表示) |
| protected | prepareShow | 出力のためのデータ処理 |
| protected | outputShow | ビューの出力処理 |
| public | confirmDestroy | 確認画面を表示 |
| protected | validateDestroy | 削除前のバリデーション処理 ★ |
| protected | prepareConfirmDestroy | 出力のためのデータ処理 ★ |
| protected | outputConfirmDestroy | ビューの出力処理 |
| public | destroy | 削除処理を実行 |
| protected | prepareDestroy | 出力のためのデータ処理 ★ |
| protected | executeDestroy | データの削除処理 ★ |
| protected | outputDestroy | ビューの出力処理 |
専用の確認画面(パターンB)を使う場合は confirmDestroy ルートと confirmDestroy.blocs.html を追加してください(POST で定義)。一括削除の専用確認画面は confirmSelect ルートを追加します。
Route::post('/{id}/confirmDestroy', [UserController::class, 'confirmDestroy'])->where('id', '[0-9]+')->name('confirmDestroy');
Route::post('/confirmSelect', [UserController::class, 'confirmSelect'])->name('confirmSelect');
confirmDestroy / confirmSelect ルートも自動生成されません。
ベースコントローラーの主な変数
| 変数名 | 説明 |
|---|---|
$this->deletedNum |
削除されたデータの件数。削除操作の結果確認に使用 |
一括削除機能(SelectTrait)
一覧画面で複数のレコードを選択して一括削除する機能です。
メソッド
| 可視性 | メソッド名 | 処理内容 |
|---|---|---|
| public | confirmSelect | 選択内容のバリデーションと確認画面の表示 |
| protected | validateSelect | 選択項目のバリデーション($this->loopItem をチェック) ★ |
| protected | prepareConfirmSelect | 確認画面表示前のデータ処理 ★ |
| protected | outputConfirmSelect | 確認画面のビュー出力 |
| public | select | 一括削除処理の実行 |
| protected | prepareSelect | 削除前のデータ処理 ★ |
| protected | executeSelect | 選択されたレコードの一括削除 ★ |
| protected | outputSelect | 削除件数を含むリダイレクト処理 |
主な変数
| 変数名 | 説明 |
|---|---|
$this->selectedIdList |
選択されたレコードのID配列 |
$this->deletedNum |
削除されたレコードの件数 |