diff --git a/app/Http/Controllers/Admin/SettingController.php b/app/Http/Controllers/Admin/SettingController.php index e650576..7fae68d 100644 --- a/app/Http/Controllers/Admin/SettingController.php +++ b/app/Http/Controllers/Admin/SettingController.php @@ -19,7 +19,7 @@ class SettingController extends Controller // リクエストから取得 $sort = $request->input('sort', 'setting_id'); - $sort_type = $request->input('sort_type', 'desc'); + $sort_type = $request->input('sort_type', 'asc'); // 許可されたカラムのみソート(安全対策) $allowedSorts = ['setting_id', 'setting_key', 'setting_value']; // ← 必要に応じて増やす @@ -42,15 +42,17 @@ class SettingController extends Controller /** - * 追加(GET: 画面 / POST: 登録): /settings/add + * 新規追加(GET/POST): /settings/add */ public function add(Request $request) { if ($request->isMethod('post')) { $v = Validator::make($request->all(), $this->rules()); - if ($v->fails()) return back()->withErrors($v)->withInput(); + if ($v->fails()) { + return back()->withErrors($v)->withInput(); + } - // チェックボックス(未送信時は 0) + // チェックボックス(未送信時は false) $data = $this->onlyFillable($request); $data['printable_alert_flag'] = $request->boolean('printable_alert_flag'); @@ -61,15 +63,15 @@ class SettingController extends Controller return redirect()->route('settings')->with('success', '設定を登録しました。'); } + // GET時:空フォーム表示 return view('admin.settings.add', [ 'setting' => new Setting(), // フォーム初期化用 - 'isInfo' => false, 'isEdit' => false, ]); } /** - * 編集(GET: 画面 / POST: 更新): /settings/edit/{id} + * 編集(GET/POST): /settings/edit/{id} */ public function edit(Request $request, int $id) { @@ -77,7 +79,9 @@ class SettingController extends Controller if ($request->isMethod('post')) { $v = Validator::make($request->all(), $this->rules($id)); - if ($v->fails()) return back()->withErrors($v)->withInput(); + if ($v->fails()) { + return back()->withErrors($v)->withInput(); + } $data = $this->onlyFillable($request); $data['printable_alert_flag'] = $request->boolean('printable_alert_flag'); @@ -89,13 +93,14 @@ class SettingController extends Controller return redirect()->route('settings')->with('success', '設定を更新しました。'); } + // GET時:編集フォーム表示 return view('admin.settings.edit', [ 'setting' => $setting, - 'isInfo' => false, 'isEdit' => true, ]); } + /** * 詳細表示: /settings/info/{id} */ @@ -111,25 +116,30 @@ class SettingController extends Controller } /** - * 削除(単体/複数対応): /settings/delete + * 削除(一覧/編集 共通対応): /settings/delete または /settings/delete/{id} */ - public function delete(Request $request) + public function delete(Request $request, $id = null) { + // 一覧画面(checkbox で複数削除) $ids = $request->input('ids'); - $id = $request->input('id'); - if ($id) $ids = [$id]; - if (!is_array($ids) || empty($ids)) { - return back()->with('error', '削除対象が指定されていません。'); + // 編集画面(単体削除) + if ($id) { + $ids = [$id]; } - DB::transaction(function () use ($ids) { - Setting::whereIn('setting_id', $ids)->delete(); - }); + // 削除対象が空 + if (empty($ids)) { + return redirect()->route('settings')->with('error', '削除対象が選択されていません。'); + } + + // 削除処理 + Setting::destroy($ids); return redirect()->route('settings')->with('success', '設定を削除しました。'); } + // ===== バリデーション・ユーティリティ ===== /** @@ -142,7 +152,7 @@ class SettingController extends Controller 'web_master' => ['nullable','string','max:255'], 'auto_change_date' => ['nullable','date'], 'auto_chage_master' => ['nullable','string','max:255'], // ※カラム名は仕様通り - 're_issue_alert_number' => ['nullable','integer','min:0'], + 're-issue_alert_number' => ['nullable','integer','min:0'], 'image_base_url1' => ['nullable','string','max:255'], 'image_base_url2' => ['nullable','string','max:255'], 'printable_alert_flag' => ['nullable','boolean'], @@ -163,7 +173,7 @@ class SettingController extends Controller 'web_master', 'auto_change_date', 'auto_chage_master', - 're_issue_alert_number', + 're-issue_alert_number', 'image_base_url1', 'image_base_url2', 'printable_number', diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 6a17bda..67b056a 100644 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -24,7 +24,7 @@ class Setting extends Model 'web_master', // ウェブ参照マスタ 'auto_change_date', // ウェブ参照マスタ自動切り替え日時 'auto_chage_master', // 自動切換えウェブ参照マスタ(※DB定義のままchage) - 're_issue_alert_number', // 再発行アラート回数 + 're-issue_alert_number', // 再発行アラート回数 'image_base_url1', // ニュースイメージURLベース名 'image_base_url2', // 本人確認写真URLベース名 'printable_alert_flag', // プリンタ印字残警告フラグ @@ -37,7 +37,7 @@ class Setting extends Model // キャスト(型変換) protected $casts = [ 'auto_change_date' => 'datetime', // 日時 - 're_issue_alert_number' => 'integer', // 整数 + 're-issue_alert_number' => 'integer', // 整数 'printable_alert_flag' => 'boolean', // 真偽値 'printable_number' => 'integer', // 整数 'printable_alert_number' => 'integer', // 整数 @@ -46,4 +46,17 @@ class Setting extends Model 'created_at' => 'datetime', // 作成日時 'updated_at' => 'datetime', // 更新日時 ]; + + // アクセサ(getter) + public function getReissueAlertNumberAttribute() + { + return $this->attributes['re-issue_alert_number'] ?? null; + } + + // ミューテタ(setter) + public function setReissueAlertNumberAttribute($value) + { + $this->attributes['re-issue_alert_number'] = $value; + } + } diff --git a/resources/views/admin/settings/_form.blade.php b/resources/views/admin/settings/_form.blade.php index 3173db6..4d1c4dc 100644 --- a/resources/views/admin/settings/_form.blade.php +++ b/resources/views/admin/settings/_form.blade.php @@ -1,4 +1,4 @@ -{{-- フラッシュメッセージ --}} + -