]> _ Git - cubist_cms-back.git/commitdiff
#2843
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 24 Jun 2019 14:16:17 +0000 (16:16 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 24 Jun 2019 14:16:17 +0000 (16:16 +0200)
src/app/Magic/Controllers/CubistMagicControllerTrait.php

index fa29ef4a0beccf49e2df3574d21f5706ad2acab6..b8a5ae020f6e1e283be43b1d38add97422bb8fda 100644 (file)
@@ -7,6 +7,7 @@ use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel;
 use Cubist\Backpack\app\Magic\Requests\CubistMagicRequest;
 use Cubist\Backpack\app\Magic\Requests\CubistMagicStoreRequest;
 use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest;
+use Illuminate\Support\Arr;
 
 trait CubistMagicControllerTrait
 {
@@ -102,11 +103,41 @@ trait CubistMagicControllerTrait
      */
     protected function _prepareCRUDData(CubistMagicRequest $request)
     {
+
+        $appendComposite = [];
         foreach ($request->all() as $field => $content) {
+            $initialContent = $content;
+            $initialField = $field;
+
+            $change = false;
+            $unsetInitial = false;
             if (is_array($content)) {
-                $request->request->set($field, json_encode($content));
+                $content = json_encode($content);
+                $change = true;
+            }
+            $e = explode('___', $field);
+            if (count($e) > 1) {
+                $change = false;
+                $unsetInitial = true;
+                $field = $e[0];
+                for ($i = 1; $i < count($e); $i++) {
+                    $field .= '.' . $e[$i];
+                }
+                Arr::set($appendComposite, $field, $content);
+            }
+
+            if ($change) {
+                $request->request->set($field, $content);
             }
+            if ($unsetInitial) {
+                $request->request->set($initialField, null);
+            }
+        }
+
+        foreach ($appendComposite as $key => $value) {
+            $request->request->set($key, $value);
         }
+
         return $request;
     }