From ee1ce1eb3ee35ef32cf0c93f45fcb6320135e195 Mon Sep 17 00:00:00 2001 From: "kin.rinzen" Date: Tue, 7 Oct 2025 19:24:06 +0900 Subject: [PATCH] =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E3=83=9E=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Admin/SettingController.php | 48 ++-- app/Models/Setting.php | 17 +- .../views/admin/settings/_form.blade.php | 221 ++++++++++++------ resources/views/admin/settings/add.blade.php | 26 ++- resources/views/admin/settings/edit.blade.php | 32 ++- resources/views/admin/settings/info.blade.php | 28 --- resources/views/admin/settings/list.blade.php | 52 +---- routes/web.php | 4 + 8 files changed, 245 insertions(+), 183 deletions(-) delete mode 100644 resources/views/admin/settings/info.blade.php 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 @@ -{{-- フラッシュメッセージ --}} + -
-
- {{-- 設定ID(情報/編集時のみ表示) --}} - @if(!empty($isInfo) || !empty($isEdit)) + {{-- アラート --}} + @if(Session::has('success')) + + @endif + + @if($errors->any()) +
+ +

{{ __('入力内容に不備があります') }}

+
    + @foreach($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+
+ + {{-- 設定ID(編集時のみ表示) --}} + @if(!empty($isEdit))
@@ -28,55 +49,108 @@
-
- +
+ @php + $editMaster = old('edit_master', $setting->edit_master ?? '_a'); + @endphp + +
+ + +
+ +
+ + +
+ + + 社員ウェブで使用するマスタのサフィックスを選択してください。 + (例:price → price_a / price_b) +
+ + + {{-- ウェブ参照マスタ --}}
-
- +
+ @php + $webMaster = old('web_master', $setting->web_master ?? '_a'); + @endphp + +
+ + +
+ +
+ + +
+ + + ユーザーウェブ、バックグラウンド処理、プリンタ制御プログラムで参照されるマスタのサフィックスを選択してください。 +
- {{-- ウェブ参照マスタ自動切り替え日時(datetime-local) --}} + + {{-- ウェブ参照マスタ自動切り替え日時 --}}
+ class="form-control form-control-lg">
- {{-- 自動切換えウェブ参照マスタ(※カラム名 chage) --}} + {{-- 自動切換えウェブ参照マスタ --}}
-
- +
+ @php + $autoChangeMaster = old('auto_change_master', $setting->auto_change_master ?? '_a'); + @endphp + +
+ + +
+ +
+ + +
+ + + 「ウェブ参照マスタ自動切り替え日時」に切換え後に使用するマスタのサフィックス(_a または _b)を選択してください。 +
+ {{-- 再発行アラート回数 --}}
- + + + この回数以上シールが再発行された場合、キューに追加されます。 +
{{-- ニュースイメージURLベース名 --}} @@ -86,8 +160,7 @@
+ class="form-control form-control-lg">
{{-- 本人確認写真URLベース名 --}} @@ -97,11 +170,10 @@
+ class="form-control form-control-lg">
- {{-- プリンタ印字残警告フラグ(チェックボックス) --}} + {{-- プリンタ印字残警告フラグ --}}
@@ -109,13 +181,22 @@ @php $flag = old('printable_alert_flag', isset($setting) ? (int)$setting->printable_alert_flag : 0); @endphp - - - {{ $flag ? '有効' : '無効' }} + +
+ + +
+ +
+ + +
+ + {{-- プリンタロール紙印字可能数 --}}
@@ -123,8 +204,7 @@
+ class="form-control form-control-lg">
{{-- プリンタロール紙印字残警告数 --}} @@ -134,8 +214,7 @@
+ class="form-control form-control-lg">
{{-- プリンタ制御プログラムキープアライブ間隔(分) --}} @@ -145,8 +224,7 @@
+ class="form-control form-control-lg">
{{-- 更新オペレータID --}} @@ -157,37 +235,36 @@ + readonly>
- {{-- 登録/更新日時(情報表示のみ) --}} - @if(!empty($isInfo)) -
- -
-
- -
-
- -
-
- -
- @endif + + {{-- ▼ 下部ボタン --}} +
+
+ + {{-- 登録ボタン --}} + @if($isEdit) + + @else + + @endif + + {{-- 削除ボタン(編集時のみ表示) --}} + @if($isEdit) + + @endif + +
-{{-- ===== 下部ボタン領域 ===== --}} -
- {{-- 下部ボタン --}} - @if($isEdit) - - - @else - - - @endif -
+ diff --git a/resources/views/admin/settings/add.blade.php b/resources/views/admin/settings/add.blade.php index 45b86f2..bd31021 100644 --- a/resources/views/admin/settings/add.blade.php +++ b/resources/views/admin/settings/add.blade.php @@ -1,16 +1,18 @@ @extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] 設定マスタ') +@section('title', '新規') @section('content')
-

新規登録

-
+
+

新規

+
+
@@ -19,12 +21,18 @@
+ + {{-- 白色カード枠 --}}
-
- @csrf - @include('admin.settings._form', ['isInfo' => 0, 'isEdit' => 0, 'setting' => $setting ?? new \App\Models\Setting()]) -
+
+
+ @csrf + @include('admin.settings._form', ['isEdit' => false]) +
+
+
@endsection + diff --git a/resources/views/admin/settings/edit.blade.php b/resources/views/admin/settings/edit.blade.php index 9c52f06..c9a6e5b 100644 --- a/resources/views/admin/settings/edit.blade.php +++ b/resources/views/admin/settings/edit.blade.php @@ -1,14 +1,16 @@ @extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] 設定マスタ') +@section('title', '編集') @section('content')
-

編集

-
+
+

編集

+
+
@@ -20,11 +22,25 @@
-
- @csrf - @include('admin.settings._form', ['isInfo' => 0, 'isEdit' => 1, 'setting' => $setting]) -
+
+ + {{-- 編集フォーム --}} +
+ @csrf + @include('admin.settings._form', ['isEdit' => true]) +
+ + {{-- 削除フォーム --}} + +
+
+ @endsection diff --git a/resources/views/admin/settings/info.blade.php b/resources/views/admin/settings/info.blade.php deleted file mode 100644 index 2cb0bf8..0000000 --- a/resources/views/admin/settings/info.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] 設定マスタ') - -@section('content') -
-
-
-

設定マスタ 詳細

-
- -
-
-
-
- -
-
-
- {{-- 詳細はフォームでなく共通パーツを読み込み(ボタンは「新規/編集」表示) --}} - @include('admin.settings._form', ['isInfo' => 1, 'isEdit' => 0, 'setting' => $setting]) -
-
-
-@endsection diff --git a/resources/views/admin/settings/list.blade.php b/resources/views/admin/settings/list.blade.php index 780dbc8..ab5a300 100644 --- a/resources/views/admin/settings/list.blade.php +++ b/resources/views/admin/settings/list.blade.php @@ -1,5 +1,5 @@ @extends('layouts.app') -@section('title', '[東京都|〇〇駐輪場] 設定マスタ') +@section('title', '設定マスタ') @section('content')
@@ -51,13 +51,13 @@ @elseif(Session::has('error'))
-

{{ __('誤差') }}:

+

{{__('入力内容に不備があります')}}:

{!! Session::get('error') !!}
@elseif(isset($errorMsg))
-

{{ __('誤差') }}:

+

{{__('入力内容に不備があります')}}:

{!! $errorMsg !!}
@endif @@ -69,10 +69,10 @@
@csrf - + @@ -91,7 +91,7 @@ @@ -122,43 +122,5 @@ - -{{-- 一括削除 & ソート --}} -@push('scripts') - -@endpush @endsection + diff --git a/routes/web.php b/routes/web.php index 657d438..5587827 100644 --- a/routes/web.php +++ b/routes/web.php @@ -461,6 +461,10 @@ Route::middleware('auth')->group(function () { ->where(['id' => '[0-9]+']) ->name('settings_info'); Route::match(['get', 'post'], '/settings/delete', [SettingController::class, 'delete'])->name('settings_delete'); + Route::post('/settings/delete/{id}', [SettingController::class, 'delete']) + ->where(['id' => '[0-9]+']) + ->name('settings_delete_id'); + // [東京都|〇〇駐輪場] メール送信テンプレートマスタ Route::match(['get', 'post'], '/mail_templates', [MailTemplateController::class, 'list'])->name('mail_templates');
- + {{ __('設定ID') }} {{ __('編集マスタ') }}