]> _ Git - pmi.git/commitdiff
wait #6143 @0:15
authorsoufiane <soufiane@cubedesigners.com>
Wed, 19 Jul 2023 09:25:20 +0000 (11:25 +0200)
committersoufiane <soufiane@cubedesigners.com>
Wed, 19 Jul 2023 09:25:20 +0000 (11:25 +0200)
app/Http/Controllers/AjaxController.php
resources/js/app.js
resources/views/pages/order.blade.php

index 7da2fce8f7d9470e60c8af8ea315877b79475d03..624f87471e1ba903eea053f007f45ea12194d264 100644 (file)
@@ -44,7 +44,7 @@ class AjaxController extends CubistFrontController
      * @param PageData $page
      * @return array
      */
-    protected function _validate_form(Request $request, $page, $form = null)
+    protected function _validate_form(Request $request, $page, $alreadyValidate = null, $form = null)
     {
         $validation = [];
         $messages = [];
@@ -54,32 +54,38 @@ class AjaxController extends CubistFrontController
             $fields = $request->all();
         }
 
-        foreach ($fields as $field) {
-            $v = [];
-            if ($field['mandatory']) {
-                $v[] = 'required';
-                $messages[$field['type'] . '.required'] = sprintf(__('Champ obligatoire'), self::$_labels[$field['type']]);
-            } else {
-                $v[] = 'nullable';
-            }
-            if ($field['type'] === 'email') {
-                $v[] = 'email';
-                $messages[$field['type'] . '.email'] = __('Adresse e-mail invalide');
-            } else if ($field['type'] === 'phone') {
-                $v[] = 'regex:/^[0-9 \+\.\-\(\)\/]{10,}$/';
-                $messages[$field['type'] . '.regex'] = __('Numéro de téléphone invalide');
-            }
-            if (count($v)) {
-                $validation[$field['type']] = implode('|', $v);
+        if(!$alreadyValidate) {
+
+            foreach ($fields as $field) {
+                $v = [];
+                if ($field['mandatory']) {
+                    $v[] = 'required';
+                    $messages[$field['type'] . '.required'] = sprintf(__('Champ obligatoire'), self::$_labels[$field['type']]);
+                } else {
+                    $v[] = 'nullable';
+                }
+                if ($field['type'] === 'email') {
+                    $v[] = 'email';
+                    $messages[$field['type'] . '.email'] = __('Adresse e-mail invalide');
+                } else if ($field['type'] === 'phone') {
+                    $v[] = 'regex:/^[0-9 \+\.\-\(\)\/]{10,}$/';
+                    $messages[$field['type'] . '.regex'] = __('Numéro de téléphone invalide');
+                }
+                if (count($v)) {
+                    $validation[$field['type']] = implode('|', $v);
+                }
             }
-        }
 
-        $validator = Validator::make($request->all(), $validation, $messages);
-        $validator->validate();
+            $validator = Validator::make($request->all(), $validation, $messages);
+            $validator->validate();
 
-        $validatedData = $validator->validated();
+            $validatedData = $validator->validated();
+
+            return $validatedData;
+        } else {
+            return $request->all();
+        }
 
-        return $validatedData;
     }
 
     /**
@@ -260,7 +266,7 @@ class AjaxController extends CubistFrontController
         $cartData = json_decode($request->input('cart_data'), true);
 
         // Validated form fields
-        $validatedData = $this->_validate_form($request, $page);
+        $validatedData = $action === "order" ? $this->_validate_form($request, $page, true) : $this->_validate_form($request, $page);
         $products = PageData::fromEntities(Product::whereIn('id', array_keys($cartData) )->get());
         $cartData_ = Product::getCartData();
         $productsArray = Product::getProductsByIds(array_keys($cartData));
index 52858f132d49b9d64b6094e090f8741106bf5de4..b57ac7fd7545ae57a89d7683e5b4d38d13dd3282 100644 (file)
@@ -581,6 +581,7 @@ const app = new Vue({
                     company: this.user.company,
                     phone: this.user.phone,
                     email: this.user.email,
+                    form: 'order'
                 }
 
             axios.post('/ajax/order', data)
index 1bfa03dd3db74c95fb841ec7ab0b5bc75b7394ee..3911aafbce7bb52cb7e33155cd5c8a66df3d0850 100644 (file)
 
             </grid>
 
+            <div class="bg-grey-100 p-1v hidden">
+                @form([
+                'action' => '/ajax/request_quote',
+                'ga'=>false,
+                'extra_fields' => '<input type="hidden" name="cart_data" :value="cartData">' // Populated by VueJS
+                ])
+            </div>
+
         </div>
 
         <div v-cloak v-if="cartItemCount == 0" class="p-1v text-center bg-grey-100 text-lg">