From 0a95a29e32fd28541205a45a69bfb497dd17efb5 Mon Sep 17 00:00:00 2001 From: gakigaki Date: Wed, 10 Sep 2025 17:02:55 +0900 Subject: [PATCH 1/2] fix(databases): preserve input when returning from confirm and ensure radio/select/checkbox prefer request/old values on edit --- .../User/Databases/DatabasesPlugin.php | 5 +- .../default/databases_confirm.blade.php | 1 + .../default/databases_input.blade.php | 4 +- .../databases_input_checkbox.blade.php | 49 +++++-------------- .../default/databases_input_radio.blade.php | 21 ++++---- .../default/databases_input_select.blade.php | 21 ++++---- 6 files changed, 40 insertions(+), 61 deletions(-) diff --git a/app/Plugins/User/Databases/DatabasesPlugin.php b/app/Plugins/User/Databases/DatabasesPlugin.php index b3127c653..44577bbe6 100644 --- a/app/Plugins/User/Databases/DatabasesPlugin.php +++ b/app/Plugins/User/Databases/DatabasesPlugin.php @@ -1118,8 +1118,9 @@ public function detail($request, $page_id, $frame_id, $id, $mode = null) */ public function input($request, $page_id, $frame_id, $id = null, $errors = null) { - // セッション初期化などのLaravel 処理。 - // $request->flash(); + // セッション初期化(戻る時に入力値を保持するため) + // 確認画面からの「前へ」ではアップロードファイルは含まれないため、flash可能。 + $request->flash(); // Databases、Frame データ $database = $this->getDatabases($frame_id); diff --git a/resources/views/plugins/user/databases/default/databases_confirm.blade.php b/resources/views/plugins/user/databases/default/databases_confirm.blade.php index 7d1912406..41ce9c958 100644 --- a/resources/views/plugins/user/databases/default/databases_confirm.blade.php +++ b/resources/views/plugins/user/databases/default/databases_confirm.blade.php @@ -46,6 +46,7 @@ function submit_databases_temporary() {
{{ csrf_field() }} + @foreach($databases_columns as $database_column) {{-- 入力しないカラム型は表示しない --}} diff --git a/resources/views/plugins/user/databases/default/databases_input.blade.php b/resources/views/plugins/user/databases/default/databases_input.blade.php index 8d31240b0..8dbcad346 100644 --- a/resources/views/plugins/user/databases/default/databases_input.blade.php +++ b/resources/views/plugins/user/databases/default/databases_input.blade.php @@ -90,10 +90,10 @@
- @foreach($databases_categories as $category) - + @endforeach @include('plugins.common.errors_inline', ['name' => 'categories_id']) diff --git a/resources/views/plugins/user/databases/default/databases_input_checkbox.blade.php b/resources/views/plugins/user/databases/default/databases_input_checkbox.blade.php index d42d2424e..7012527ba 100644 --- a/resources/views/plugins/user/databases/default/databases_input_checkbox.blade.php +++ b/resources/views/plugins/user/databases/default/databases_input_checkbox.blade.php @@ -13,47 +13,22 @@ if (!empty($value_obj)) { $value = $value_obj->value; } - + // 現在の選択値の決定(リクエスト優先 → old → 既存値分解) + $selected_values = []; + if (isset($request->databases_columns_value) && + array_key_exists($database_obj->id, $request->databases_columns_value)) { + $selected_values = (array)$request->databases_columns_value[$database_obj->id]; + } elseif (!is_null(old('databases_columns_value.' . $database_obj->id))) { + $selected_values = (array)old('databases_columns_value.' . $database_obj->id); + } elseif (!empty($value)) { + // 既存値は '|' 区切り + $selected_values = array_filter($value === '' ? [] : explode('|', $value), function($v){ return $v !== ''; }); + } @endphp
id")) border border-danger @endif"> @foreach($databases_columns_id_select[$database_obj->id] as $select) - - @php - // チェック用変数 - $column_checkbox_checked = ""; - - // old でチェックされていたもの - if (!empty(old('databases_columns_value.'.$database_obj->id))) { - foreach(old('databases_columns_value.'.$database_obj->id) as $old_value) { - if ( $old_value == $select['value'] ) { - $column_checkbox_checked = " checked"; - } - } - } - - // 画面が戻ってきたもの - if (isset($request->databases_columns_value) && - array_key_exists($database_obj->id, $request->databases_columns_value)) { - - foreach($request->databases_columns_value[$database_obj->id] as $request_value) { - if ( $request_value == $select['value'] ) { - $column_checkbox_checked = " checked"; - } - } - } - - // 変更時のデータベースの値から - if (!empty($value)) { - // 入力されたデータの中に選択肢が含まれているか否か - // 選択肢にカンマが含まれている可能性を考慮 - if(strpos($value,$select['value']) !== false){ - $column_checkbox_checked = " checked"; - } - } - @endphp -
- +
diff --git a/resources/views/plugins/user/databases/default/databases_input_radio.blade.php b/resources/views/plugins/user/databases/default/databases_input_radio.blade.php index c29e7f90e..1b5f0ec15 100644 --- a/resources/views/plugins/user/databases/default/databases_input_radio.blade.php +++ b/resources/views/plugins/user/databases/default/databases_input_radio.blade.php @@ -12,22 +12,23 @@ if (!empty($value_obj)) { $value = $value_obj->value; } + // 現在値の決定(リクエスト優先 → old → 既存値) + $current = null; + if (isset($request->databases_columns_value) && + array_key_exists($database_obj->id, $request->databases_columns_value)) { + $current = $request->databases_columns_value[$database_obj->id]; + } elseif (!is_null(old('databases_columns_value.' . $database_obj->id))) { + $current = old('databases_columns_value.' . $database_obj->id); + } else { + $current = $value; + } @endphp @if (array_key_exists($database_obj->id, $databases_columns_id_select))
id")) border border-danger @endif"> @foreach($databases_columns_id_select[$database_obj->id] as $select)
- @if (old('databases_columns_value.'.$database_obj->id) == $select['value'] || - $select['value'] == $value || - (isset($request->databases_columns_value) && - array_key_exists($database_obj->id, $request->databases_columns_value) && - $request->databases_columns_value[$database_obj->id] == $select['value']) - ) - - @else - - @endif +
@endforeach diff --git a/resources/views/plugins/user/databases/default/databases_input_select.blade.php b/resources/views/plugins/user/databases/default/databases_input_select.blade.php index 971e8875c..c32666ecc 100644 --- a/resources/views/plugins/user/databases/default/databases_input_select.blade.php +++ b/resources/views/plugins/user/databases/default/databases_input_select.blade.php @@ -12,22 +12,23 @@ if (!empty($value_obj)) { $value = $value_obj->value; } + // 現在値の決定(リクエスト優先 → old → 既存値) + $current = null; + if (isset($request->databases_columns_value) && + array_key_exists($database_obj->id, $request->databases_columns_value)) { + $current = $request->databases_columns_value[$database_obj->id]; + } elseif (!is_null(old('databases_columns_value.' . $database_obj->id))) { + $current = old('databases_columns_value.' . $database_obj->id); + } else { + $current = $value; + } @endphp @if (array_key_exists($database_obj->id, $databases_columns_id_select)) @include('plugins.common.errors_inline', ['name' => "databases_columns_value.$database_obj->id"]) From 2058f286ffffe752be047867f75dd4b1e587f842 Mon Sep 17 00:00:00 2001 From: gakigaki Date: Wed, 10 Sep 2025 17:21:43 +0900 Subject: [PATCH 2/2] chore(databases): unify error class for category select in input view --- .../plugins/user/databases/default/databases_input.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/plugins/user/databases/default/databases_input.blade.php b/resources/views/plugins/user/databases/default/databases_input.blade.php index 8dbcad346..0ddff7c4d 100644 --- a/resources/views/plugins/user/databases/default/databases_input.blade.php +++ b/resources/views/plugins/user/databases/default/databases_input.blade.php @@ -90,7 +90,7 @@
- @foreach($databases_categories as $category)