diff --git a/app/Plugins/Manage/SiteManage/SiteManage.php b/app/Plugins/Manage/SiteManage/SiteManage.php index 905afedab..c55f2fb71 100644 --- a/app/Plugins/Manage/SiteManage/SiteManage.php +++ b/app/Plugins/Manage/SiteManage/SiteManage.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Lang; +use Illuminate\Validation\Rule; use setasign\Fpdi\Tcpdf\Fpdi; @@ -509,29 +510,44 @@ public function saveCategories($request, $id) if (!empty($request->add_display_sequence) || !empty($request->add_classname) || !empty($request->add_category) || !empty($request->add_color) || !empty($request->add_background_color)) { // 項目のエラーチェック $rules['add_display_sequence'] = ['required']; + $rules['add_classname'] = ['required', 'unique:categories,classname']; $rules['add_category'] = ['required']; $rules['add_color'] = ['required']; $rules['add_background_color'] = ['required']; $setAttributeNames['add_display_sequence'] = '追加行の表示順'; + $setAttributeNames['add_classname'] = 'クラス名'; $setAttributeNames['add_category'] = '追加行のカテゴリ'; $setAttributeNames['add_color'] = '追加行の文字色'; $setAttributeNames['add_background_color'] = '追加行の背景色'; } // 既存項目のidに値が入っていたら、行の他の項目も必須 + $is_not_unique = false; if (!empty($request->categories_id)) { foreach ($request->categories_id as $category_id) { // 項目のエラーチェック $rules['display_sequence.'.$category_id] = ['required']; + $rules['classname.'.$category_id] = ['required']; $rules['category.'.$category_id] = ['required']; $rules['color.'.$category_id] = ['required']; $rules['background_color.'.$category_id] = ['required']; $setAttributeNames['display_sequence.'.$category_id] = '表示順'; + $setAttributeNames['classname.'.$category_id] = 'クラス名'; $setAttributeNames['category.'.$category_id] = 'カテゴリ'; $setAttributeNames['color.'.$category_id] = '文字色'; $setAttributeNames['background_color.'.$category_id] = '背景色'; + /** + * (classname重複チェック)categoriesを検索、classnameに同じものが1件でもあれば$is_not_uniqueにtrueをセット + */ + $is_exists = Categories::query() + ->where('classname', $request->classname[$category_id]) + ->where('id', '!=', $category_id) + ->exists(); + if($is_exists){ + $is_not_unique = true; + } } } @@ -543,6 +559,11 @@ public function saveCategories($request, $id) // return $this->categories($request, $id, $validator->errors()); return redirect()->back()->withErrors($validator)->withInput(); } + // classname重複チェック + if($is_not_unique){ + $validator->errors()->add("duplicate_class_name_violation", 'そのクラス名は既に使用されています。'); + return redirect()->back()->withErrors($validator)->withInput(); + } // 追加項目アリ if (!empty($request->add_display_sequence)) { diff --git a/resources/views/plugins/manage/site/categories.blade.php b/resources/views/plugins/manage/site/categories.blade.php index 711312eb0..354239012 100644 --- a/resources/views/plugins/manage/site/categories.blade.php +++ b/resources/views/plugins/manage/site/categories.blade.php @@ -49,7 +49,7 @@ function form_delete(id) { --}}
red
, blue
)やRGB色(例:#000000
, #111
)等を設定できます。cc_category_クラス名
で使用できます。cc_category_クラス名
で使用できます。「クラス名」は重複しないように設定してください。