Skip to main content

Laravel + BLOCS: 処理フローとアーキテクチャ概要

Laravel + BLOCS: 処理フローとアーキテクチャ概要

Laravel と BLOCS を使った管理画面開発における、リクエストからレスポンスまでの処理フローを示す。ユーザー管理画面を例に説明する。

処理フロー

1. リクエスト受信(Entry Point)

2. ルーティング(Routing)

3. ミドルウェア(Auth)

3層のミドルウェアスタックを通過する:

順序 ミドルウェア 役割
1 web セッション、Cookie、CSRF保護
2 auth 認証チェック(未ログインならリダイレクト)
3 Blocs\Middleware\Role Menu::checkRole() でルート名と config/role.php のパターンを照合し、ユーザーのロールを検証。不一致なら403

4. コントローラー(Controller)

継承構造

app/Http/Controllers/Admin/UserController.phpvendor/blocs/admin/controllers/Base.phpextends する。

並び替え(SortTrait)は Base に含まれず、必要なコントローラーで use SortTrait; して利用する(詳しくは No.5.6 を参照)。

Base コントローラーの構成(Trait)

Base は以下の10個の Trait で構成される:

Trait 機能
CommonTrait keepItem, getCurrent, mergeTable, setupMenu 等の共通ユーティリティ
BackTrait リダイレクト・フラッシュメッセージ
StoreTrait 新規作成(create / confirmStore / store)
UpdateTrait 更新(edit / show / confirmUpdate / update)、競合検出。show は削除対象表示にも使用
DestroyTrait 削除(confirmDestroy / destroy)
SelectTrait 一括削除
ToggleTrait 有効/無効の切り替え(disabled_at)
CopyTrait データ複製(copy ルートは自動生成されないため、利用時は手動で定義)
FileTrait ファイル操作
LogTrait ログ記録

コントローラーの初期化

__construct() で以下のプロパティを設定する:

$this->viewPrefix   = 'admin.user';          // ビューのプレフィックス
$this->mainTable    = 'App\Models\Admin\User'; // 対象モデル
$this->loopItem     = 'users';               // ビューでのループ変数名
$this->paginateNum  = 20;                    // 1ページの表示件数
$this->noticeItem   = 'email';               // 通知に表示する項目

$this->val

$this->val はビューに渡すデータの中心的なコンテナ。以下を格納する:

カスタマイズ方法

各 Trait のメソッドをコントローラーでオーバーライドして独自処理を追加できる:

5. CRUD操作と2段階確認パターン

作成・更新・削除は モーダル確認(デフォルト)または 専用確認画面(任意)の2段階フローです。専用確認画面を使う場合、確認データはセッションにフラッシュ保存されます。

初期状態ではモーダルで確認するため、confirmStore 等のルートは省略されます。

【新規作成】 create →(モーダル確認)→ store ※専用確認画面: create → confirmStore → store
【更新】     edit   →(モーダル確認)→ update ※専用確認画面: edit → confirmUpdate → update
【削除】     show   →(モーダル確認)→ destroy ※専用確認画面: show → confirmDestroy → destroy

その他の操作:

【一覧・検索】 index / search(検索条件・ソート順はセッションで永続化)
【一括削除】   index で選択 →(モーダル確認)→ select ※専用確認画面: index → confirmSelect → select
【有効/無効】  toggle(disabled_at を null ↔ now() で切り替え)

6. モデル(Model)

7. ビュー(View / Rendering)

resources/views/admin/user/ 配下の主なテンプレート:

ファイル 用途
index.blocs.html 一覧表示(検索・ソート・ページネーション・一括操作)
create.blocs.html 新規作成フォーム
edit.blocs.html 編集フォーム
show.blocs.html 削除対象の表示(モーダルで削除確認)

初期状態では登録・更新・削除の確認は モーダル で行われます。専用の確認画面(confirmStore.blocs.html 等)と対応ルートは、必要に応じて追加します(詳しくは No.4.2 を参照)。

テンプレートは BLOCS 独自の data 属性で記述する(data-val, data-loop, data-include 等)。

レスポンスとして HTML, 画像, CSS, JS などを返却する。

設定ファイル(config)

ファイル 役割
config/auth.php 認証ガード・プロバイダー設定(セッション認証、Eloquentプロバイダー)
config/role.php ロールごとにアクセス可能なルート名パターンを定義
config/menu.php サイドメニューの構成

ルートファイルの使い分け

ファイル 用途
routes/admin.php パッケージ標準の管理画面(ログイン、ユーザー管理など)。AdminServiceProvider が追加読み込み
routes/web.php blocs:develop で自動生成した管理画面のルートが追記される。Laravel 標準の web ルートもここ

自動生成ルートを編集・無効化するときは routes/web.php を、標準管理画面のルートは routes/admin.php を対象にしてください。

ディレクトリ構成と役割

public/                          ... エントリポイント、静的ファイル
routes/admin.php                 ... 標準管理画面のルーティング定義
routes/web.php                   ... 自動生成管理画面のルーティング(develop 追記先)
app/Http/Controllers/Admin/      ... コントローラー(Base を extends)
app/Models/Admin/                ... Eloquent モデル
config/                          ... 認証・権限・メニュー設定
resources/views/admin/           ... .blocs.html テンプレート
vendor/blocs/admin/controllers/  ... BLOCS ベースコントローラー・トレイト
vendor/blocs/admin/src/Middleware/ ... Role ミドルウェア