blocs/admin: 一括削除・有効/無効のカスタマイズ(SelectTrait / ToggleTrait)
blocs/admin: 一括削除・有効/無効のカスタマイズ(SelectTrait / ToggleTrait)
一覧画面での一括削除(SelectTrait)と有効/無効切替(ToggleTrait)のカスタマイズ方法です。いずれも Base コントローラーに含まれ、blocs:develop 自動生成時にルートが追加されます(No.3.1 参照)。
前提条件: blocs/admin がインストール済みであること(No.1.2 でアーキテクチャ概要を参照)
一括削除(SelectTrait)
処理フロー
flowchart LR
subgraph modal["モーダル確認(デフォルト)"]
direction LR
m1["index で選択"] --> m2["select"]
end
subgraph confirm["専用確認画面"]
direction LR
c1["index"] --> c2["confirmSelect"] --> c3["select"]
end
select() メソッド内の処理順:
flowchart LR
p1["prepareSelect()"] --> p2["executeSelect()"] --> p3["logSelect()(LogTrait)"] --> p4["outputSelect()"]
カスタマイズポイント
| 可視性 | メソッド | 所属 | 処理内容 |
|---|---|---|---|
| protected | validateSelect() |
SelectTrait | 選択データの検証。未選択時は data_not_selected で一覧へ戻る |
| protected | prepareConfirmSelect() |
SelectTrait | 確認画面表示前のデータ準備 |
| protected | outputConfirmSelect() |
SelectTrait | 確認画面の表示(confirmSelect.blocs.html) |
| protected | prepareSelect() |
SelectTrait | 一括削除前の前処理 |
| protected | executeSelect() |
SelectTrait | 削除実行(内部で mainTable::destroy()) |
| protected | outputSelect() |
SelectTrait | 完了後のリダイレクト(デフォルト: data_deleted メッセージ) |
一括削除のログ記録は LogTrait の logSelect() が担当します。select() は executeSelect() の直後に logSelect() を別呼び出しします。オーバーライドする場合は No.4.4 を参照してください(SelectTrait には含まれません)。
専用確認画面を使う場合は confirmSelect ルートと confirmSelect.blocs.html を追加します(No.4.3 の削除確認画面と同様のパターン)。
リクエスト形式
一覧のチェックボックスから {loopItem}[n][selectedRows][0] 形式で ID が送信されます。extractSelectIdList() がこれを selectedIdList に変換します。
有効/無効切替(ToggleTrait)
処理フロー
flowchart TD
subgraph toggle["toggle($id) — disabled_at の切り替え(null ↔ now())"]
direction TB
t1["initializeToggleContext — 対象データ取得(private)"]
t2["executeToggleStatusChange — DB更新(private)"]
t3["outputToggle ★ — 完了メッセージとリダイレクト"]
t1 --> t2 --> t3
end
★ はオーバーライド可能です(outputToggle() のみ protected)。
カスタマイズポイント
| 可視性 | メソッド | 処理内容 |
|---|---|---|
| protected | outputToggle() |
有効化/無効化メッセージ(data_valid / data_invalid)と一覧へのリダイレクト |
disabled_at カラムがモデルに必要です。自動生成の定義ファイルで disabled_at を radio 型で定義すると、一覧にトグルボタンが表示されます(No.3.1 のソリューション管理サンプル参照)。
不要機能の無効化
一括削除やトグルを使わない場合は、テンプレートとルートから該当 UI・エンドポイントを削除します(No.3.2 参照)。