diff --git a/app/Http/Controllers/BrandController.php b/app/Http/Controllers/BrandController.php new file mode 100644 index 0000000..a468714 --- /dev/null +++ b/app/Http/Controllers/BrandController.php @@ -0,0 +1,29 @@ +fill($request->validated()); + if ($brand->saveOrFail()) { + return \response()->json(['status' => true, 'brand' => $brand]); + } + return \response()->json(['status' => false, 'message' => __('La marque n\'a pas pu être créée')]); + }); + } +} diff --git a/app/Http/Requests/Brands/StoreBrandRequest.php b/app/Http/Requests/Brands/StoreBrandRequest.php new file mode 100644 index 0000000..ceccca5 --- /dev/null +++ b/app/Http/Requests/Brands/StoreBrandRequest.php @@ -0,0 +1,42 @@ + 'required|string|min:3|max:255', + ]; + } + + /** + * Get custom attributes for validator errors. + * + * @return array + */ + public function attributes(): array + { + return [ + 'name' => trans('nom de la marque'), + ]; + } +} diff --git a/app/Http/Requests/Products/StoreProductRequest.php b/app/Http/Requests/Products/StoreProductRequest.php index aae7317..135e39a 100644 --- a/app/Http/Requests/Products/StoreProductRequest.php +++ b/app/Http/Requests/Products/StoreProductRequest.php @@ -47,6 +47,7 @@ class StoreProductRequest extends FormRequest 'picture_alt' => $this->name, 'picture_title' => $this->name, 'certification' => $this->certification == 0 ? null : $this->certification, + 'brand_id' => $this->brand[0]['id'], ]); $this->mergePicture('picture'); $this->mergeDocuments('docs'); diff --git a/resources/ts/components/BelongsToDropdown.vue b/resources/ts/components/BelongsToDropdown.vue new file mode 100644 index 0000000..f14facd --- /dev/null +++ b/resources/ts/components/BelongsToDropdown.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/resources/ts/components/BelongsToManyDropdown.vue b/resources/ts/components/BelongsToManyDropdown.vue index 975a137..a3f0a85 100644 --- a/resources/ts/components/BelongsToManyDropdown.vue +++ b/resources/ts/components/BelongsToManyDropdown.vue @@ -63,13 +63,14 @@ diff --git a/resources/views/pages/products/form.blade.php b/resources/views/pages/products/form.blade.php index 23df6c4..26dd5c0 100644 --- a/resources/views/pages/products/form.blade.php +++ b/resources/views/pages/products/form.blade.php @@ -25,13 +25,16 @@ {{ __('models.classes.brands') }}
- @include('partials.inputs.bigint-foreign-id', [ - 'id' => 'productBrand', - 'label' => trans(':model associé(e)', ['model' => Str::singular(trans('models.classes.brands'))]), - 'name' => 'brand_id', + @include('partials.inputs.bigint-belongs-to', [ + 'name' => 'brand', 'model' => $productModel ?? null, - 'associatedModels' => $brands, - 'helper' => trans('Selectionnez un(e) :model parmi la liste.', ['model' => Str::singular(trans('models.classes.brands'))]), + 'itemLimit' => [0, 1], + 'itemsList' => $brands, + 'storeRoute' => 'brands.store', + 'helper' => __('La marque associée au produit.'), + 'placeholder' => '', + 'require' => true, + 'label' => __('Marque associée') ])
@@ -199,7 +202,7 @@ 'name' => 'specified_claim', 'label' => 'Précision de l\'allégation', 'placeholder' => '', - 'value' => old('specified_claim', $productModel->claims ?? null), + 'value' => old('specified_claim', $productModel->specified_claim ?? null), 'showId' => 99, 'helper' => __('Doit décrire précisément l\'allégation (3 caractères minimum, 255 maximum).') ], @@ -222,7 +225,7 @@ 'label' => __('Réseau de distribution associé'), 'name' => 'distribution_network', 'model' => $productModel ?? null, - 'require' => true, + 'required' => true, 'associatedModels' => \App\Enums\Products\DistributionNetworkEnum::toArray(), 'helper' => trans('Selectionnez un Réseau de distribution parmi la liste.'), ]) @@ -241,7 +244,7 @@ 'label' => __('Rayon associé'), 'name' => 'ray', 'model' => $productModel ?? null, - 'require' => true, + 'required' => true, 'associatedModels' => \App\Enums\Products\RayEnum::toArray(), 'helper' => trans('Selectionnez un Rayon parmi la liste.'), ]) @@ -260,7 +263,7 @@ 'label' => __('Famille de produit associée'), 'name' => 'product_range', 'model' => $productModel ?? null, - 'require' => true, + 'required' => true, 'associatedModels' => \App\Enums\Products\RangeEnum::toArray(), 'helper' => trans('Selectionnez une Famille de produit parmi la liste.'), ]) @@ -279,7 +282,7 @@ 'label' => __('Zone géographique associée'), 'name' => 'geo_area', 'model' => $productModel ?? null, - 'require' => true, + 'required' => true, 'associatedModels' => \App\Enums\Products\GeoAreaEnum::toArray(), 'helper' => trans('Selectionnez une Zone géographique parmi la liste.'), ]) diff --git a/resources/views/partials/inputs/bigint-belongs-to.blade.php b/resources/views/partials/inputs/bigint-belongs-to.blade.php new file mode 100644 index 0000000..dd9aed8 --- /dev/null +++ b/resources/views/partials/inputs/bigint-belongs-to.blade.php @@ -0,0 +1,15 @@ +@php +$data = [ + 'name' => $name, + 'value' => old($name, collect($model->{$name}) ?? []) ?? [], + 'itemLimit' => $itemLimit, + 'itemsList' => $itemsList, + 'storeRoute' => $storeRoute ?? null, + 'placeholder' => $placeholder, + 'errors' => $errors->getBag('default')->getMessages(), + 'label' => $label, + 'require' => $require +]; +@endphp +
+@include('modules.input-error', ['helper' => $helper, 'inputName' => $name]) diff --git a/resources/views/partials/inputs/bigint-foreign-id.blade.php b/resources/views/partials/inputs/bigint-foreign-id.blade.php index 0cab24a..833cb1d 100644 --- a/resources/views/partials/inputs/bigint-foreign-id.blade.php +++ b/resources/views/partials/inputs/bigint-foreign-id.blade.php @@ -1,7 +1,6 @@ @if(!empty($label)) @endif -{{-- @dd($model->{$name}) --}}