都道府県管理機能仕様書
機能概要
都道府県管理機能は、ECサイトで扱う都道府県マスタを管理するための管理画面機能です。都道府県の作成、編集、削除、一覧表示、並び替えなどの操作が可能です。
URL: /admin/basic-master/prefectures
ナビゲーション: 店舗管理グループ > 基本マスタクラスター
技術スタック: Filament v4, Livewire v3
画面構成
一覧画面(List Prefectures)
都道府県の一覧を表示し、検索、ソート、並び替え、削除などの操作が可能です。
画面レイアウト
- テーブル: 都道府県一覧
- ツールバー: 一括削除、ページネーション
テーブルカラム
| カラム名 | 表示内容 | 検索 | ソート | 表示/非表示 |
|---|---|---|---|---|
| 名称 | name |
✅ | ✅ | 常時表示(インライン編集可能) |
| 表示順序 | sort_order |
- | ✅ | 常時表示(インライン編集可能) |
| 有効 | is_active |
- | - | 常時表示(トグル) |
| 作成日時 | created_at |
- | - | 常時表示 |
機能詳細
検索機能
- 名称(name)で検索可能
- リアルタイム検索(入力と同時にフィルタリング)
ソート機能
- デフォルトソート: sort_order 昇順
- 名称、表示順序でソート可能
並び替え機能
- ドラッグ&ドロップで表示順序を変更可能
- sort_order カラムの値を自動更新
- 並び替え後は自動的にテーブルをリフレッシュ
インライン編集 - 名称と表示順序をテーブル内で直接編集可能 - 編集後、自動的に保存
トグル編集 - 有効/無効をテーブル内で直接切り替え可能 - 切り替え後、自動的に保存
ページネーション - デフォルト表示件数: 50件 - 表示件数オプション: 10, 20, 30, 40, 50, 100, 150, 200件
一括削除 - 複数レコードを選択して一括削除可能 - 削除確認ダイアログ表示
レコードアクション - 削除(外部キー制約エラーをキャッチ)
作成画面(Create Prefecture)
新しい都道府県を作成するためのフォーム画面です。
フォーム項目
| 項目名 | フィールド名 | 必須 | 最大文字数 | 説明 |
|---|---|---|---|---|
| 名称 | name |
✅ | 100 | 都道府県名 |
| 表示順序 | sort_order |
✅ | - | 表示順序(数値、自動設定: 最大値+1) |
| 有効 | is_active |
- | - | 有効/無効トグル(デフォルト: true) |
レイアウト構成
┌─────────────────────────────────────────┐
│ 名称 │
│ 表示順序 │
│ 有効 │
└─────────────────────────────────────────┘
バリデーション
| 項目 | ルール |
|---|---|
| 名称 | 必須、最大100文字 |
| 表示順序 | 必須、数値 |
| 有効 | - |
作成時の処理
sort_orderを自動設定(最大値+1)- 都道府県レコードを作成
作成後の動作
- 作成成功後、一覧画面にリダイレクト
- 成功通知を表示
バリデーション
フォームバリデーション
| フィールド | ルール | エラーメッセージ |
|---|---|---|
name |
required, max:100 |
名称は必須です / 名称は100文字以内で入力してください |
sort_order |
required, integer |
表示順序は必須です / 表示順序は数値で入力してください |
インライン編集バリデーション
| フィールド | ルール |
|---|---|
name |
required, string, max:100 |
sort_order |
required, integer |
エラーハンドリング
一般的なエラー
- バリデーションエラー: フォーム内にエラーメッセージを表示
- データベースエラー: エラーログに記録し、ユーザーにエラー通知を表示
削除時のエラー
外部キー制約エラー - 他のテーブルで使用されている都道府県は削除不可 - エラー通知を表示: 「この都道府県は他のアイテムで使用されているため、削除できません。」
削除失敗 - エラーログに記録し、ユーザーにエラー通知を表示
技術仕様
使用技術
- Filament v4: 管理画面フレームワーク
- Livewire v3: リアクティブコンポーネント
- Alpine.js: クライアント側インタラクション(Livewireに同梱)
ファイル構成
app/Admin/Clusters/BasicMaster/Resources/Prefectures/
├── PrefectureResource.php # メインリソースクラス
└── Pages/
├── ListPrefectures.php # 一覧ページ
└── CreatePrefecture.php # 作成ページ
app/Models/
└── Prefecture.php # モデルクラス
モデル機能
リレーション - 現在、外部キーリレーションは定義されていません
スコープ
- active(): is_active = true の都道府県を取得
- ordered(): sort_order でソート
ページネーション設定
デフォルト表示件数: 50件(config/ecspoke.pagination.default_per_page)
表示件数オプション: 10, 20, 30, 40, 50, 100, 150, 200件(config/ecspoke.pagination.per_page_options)
UI/UX仕様
インライン編集 - 名称と表示順序をテーブル内で直接編集可能 - 編集後、自動的に保存
トグル編集 - 有効/無効をテーブル内で直接切り替え可能 - 切り替え後、自動的に保存
並び替え - ドラッグ&ドロップで表示順序を変更可能
関連機能
基本マスタ共通機能
- 都道府県管理は基本マスタクラスター配下の機能です
- 他の基本マスタ(国、性別、職業、登録種別)と同様の構造を持ちます