]> _ Git - cubist_cms-back.git/commitdiff
done #3029 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 11 Sep 2019 13:56:55 +0000 (15:56 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 11 Sep 2019 13:56:55 +0000 (15:56 +0200)
src/app/Magic/BunchOfFields.php
src/app/Magic/Fields/Field.php
src/app/Magic/Fields/Table.php
src/app/Magic/Models/CubistMagicAbstractModel.php

index 6bfc00c027b00b3e55342a8f24f1a2541932d0e0..79f61d03878cd7c12653989f650fe37c3803a621 100644 (file)
@@ -60,4 +60,13 @@ trait BunchOfFields
     {
         return $this->_fields;
     }
+
+    /**
+     * @param $name
+     * @return Field|null
+     */
+    public function getField($name)
+    {
+        return isset($this->_fields[$name]) ? $this->_fields[$name] : null;
+    }
 }
index 9fdb24ab0d4165d5a956a0b03511a4d8ec292a2c..e4133f82823f562e93f28285a94c900a0bfab29a 100644 (file)
@@ -206,4 +206,13 @@ class Field implements \ArrayAccess
             $this->setAttribute('wrapperAttributes', $wrapperAttributes);
         }
     }
+
+    /**
+     * @param mixed $value
+     * @return mixed
+     */
+    public function filterValue($value)
+    {
+        return $value;
+    }
 }
index 11bff602dc24d764e440f9f0df3d35e8d33f0c1a..949e7ca7de4940405850e4500441c6b3b68529e9 100644 (file)
@@ -10,4 +10,35 @@ class Table extends Field
     protected $_databaseType = 'text';
     protected $_translatable = true;
 
+
+    public function filterValue($value)
+    {
+        if (null === $value) {
+            return '[]';
+        }
+
+        if (is_string($value)) {
+            $string = true;
+            $decoded = json_decode($value, 1);
+        } else {
+            $decoded = $value;
+        }
+        $res = [];
+        if (!is_array($decoded)) {
+            dd($decoded);
+        }
+        foreach ($decoded as $i => $item) {
+            if (!isset($item['id']) || $item['id'] == '') {
+                $item['id'] = $i;
+            }
+            $res[$i] = $item;
+        }
+        if ($string) {
+            $value = json_encode($res);
+        } else {
+            $value = $res;
+        }
+
+        return parent::filterValue($value);
+    }
 }
index 359405d03096ca37d69e7509ccf5af2d7b27c5a9..26aaec124db2a90d2330f614dfb025205587930e 100644 (file)
@@ -586,4 +586,13 @@ class CubistMagicAbstractModel extends Model implements HasMedia
         return $this->getMedia($c);
     }
 
+    public function getAttribute($key)
+    {
+        $value = parent::getAttribute($key);
+        $f = $this->getField($key);
+        if (null === $f) {
+            return $value;
+        }
+        return $f->filterValue($value);
+    }
 }