diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 9d4c13afd9..aa083e1ae3 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -18,6 +18,7 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; use \Illuminate\Contracts\View\View; use \Illuminate\Http\RedirectResponse; +use Illuminate\Support\MessageBag; /** @@ -29,6 +30,7 @@ use \Illuminate\Http\RedirectResponse; */ class AssetModelsController extends Controller { + protected MessageBag $validatorErrors; /** * Returns a view that invokes the ajax tables which actually contains * the content for the accessories listing, which is generated in getDatatable. @@ -158,7 +160,7 @@ class AssetModelsController extends Controller if ($this->shouldAddDefaultValues($request->input())) { if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))) { - return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error')); + return redirect()->back()->withInput()->withErrors($this->validatorErrors); } } @@ -481,9 +483,15 @@ class AssetModelsController extends Controller $rules[$field] = $validation; } - $validator = Validator::make($data, $rules); + $attributes = []; + foreach ($model->fieldset->fields as $field) { + $attributes[$field->db_column] = trim(preg_replace('/_+|snipeit|\d+/', ' ', $field->db_column)); + } + + $validator = Validator::make($data, $rules)->setAttributeNames($attributes); if($validator->fails()){ + $this->validatorErrors = $validator->errors(); return false; } diff --git a/app/Livewire/CustomFieldSetDefaultValuesForModel.php b/app/Livewire/CustomFieldSetDefaultValuesForModel.php index f45b62ce16..a5f179b1cb 100644 --- a/app/Livewire/CustomFieldSetDefaultValuesForModel.php +++ b/app/Livewire/CustomFieldSetDefaultValuesForModel.php @@ -24,7 +24,15 @@ class CustomFieldSetDefaultValuesForModel extends Component $this->fieldset_id = $this->model?->fieldset_id; $this->add_default_values = ($this->model?->defaultValues->count() > 0); + $this->initializeSelectedValuesArray(); + if (session()->has('errors')) { + $errors = session('errors')->keys(); + $selectedValuesKeys = array_keys($this->selectedValues); + if (count(array_intersect($selectedValuesKeys, $errors)) > 0) { + $this->add_default_values = true; + }; + } $this->populatedSelectedValuesArray(); } diff --git a/resources/views/livewire/custom-field-set-default-values-for-model.blade.php b/resources/views/livewire/custom-field-set-default-values-for-model.blade.php index 8f68644099..9f09d111b1 100644 --- a/resources/views/livewire/custom-field-set-default-values-for-model.blade.php +++ b/resources/views/livewire/custom-field-set-default-values-for-model.blade.php @@ -1,5 +1,4 @@ -
@if ($field->field_encrypted) diff --git a/resources/views/models/edit.blade.php b/resources/views/models/edit.blade.php index 713e517c72..9c72107ef8 100755 --- a/resources/views/models/edit.blade.php +++ b/resources/views/models/edit.blade.php @@ -36,7 +36,7 @@ -@livewire('custom-field-set-default-values-for-model',["model_id" => $item->id ?? $model_id ?? null ]) +@livewire('custom-field-set-default-values-for-model', ["model_id" => $item->id ?? $model_id ?? null]) @include ('partials.forms.edit.notes') @include ('partials.forms.edit.requestable', ['requestable_text' => trans('admin/models/general.requestable')])