メインコンテンツへスキップ

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 メッセージ)

一括削除のログ記録は LogTraitlogSelect() が担当します。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 参照)。