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 @@
+
+
+
+
+
+ {{ message }}
+
+
+
+
+
+
+
+
+ {{ parseValidationInput(`${name}[${String(index)}][name]`, allErrors) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
- @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}) --}}