From 93a45aa395bf8fb85b21d7b551b127d5bc5d13aa Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 3 Apr 2020 15:31:04 +0200 Subject: [PATCH] wip #3546 @1 --- src/app/Magic/Fields/Field.php | 2 ++ src/app/Magic/Fields/RolesPermissions.php | 3 +++ src/app/Magic/Models/CubistMagicAbstractModel.php | 12 +++++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/app/Magic/Fields/Field.php b/src/app/Magic/Fields/Field.php index 716b256..2e194e2 100644 --- a/src/app/Magic/Fields/Field.php +++ b/src/app/Magic/Fields/Field.php @@ -29,6 +29,7 @@ class Field implements \ArrayAccess protected $_databaseUnique = false; protected $_databaseIndex = false; + /** @var bool|string|array */ protected $_cast = false; protected $_translatable = false; protected $_migrateTranslatable = false; @@ -251,4 +252,5 @@ class Field implements \ArrayAccess { return $value; } + } diff --git a/src/app/Magic/Fields/RolesPermissions.php b/src/app/Magic/Fields/RolesPermissions.php index 5600d15..5b39440 100644 --- a/src/app/Magic/Fields/RolesPermissions.php +++ b/src/app/Magic/Fields/RolesPermissions.php @@ -3,9 +3,12 @@ namespace Cubist\Backpack\app\Magic\Fields; +use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel; + class RolesPermissions extends Field { protected $_adminType = 'checklist_dependency'; + protected $_cast = ['roles' => 'array', 'permissions' => 'array']; public function getDefinition() { diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index f62730c..8c5e1e1 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -260,11 +260,17 @@ class CubistMagicAbstractModel extends Model implements HasMedia if ($field->getAttribute('hidden')) { $this->hidden[] = $name; } - if ($field->getAttribute('cast', false) !== false) { - $this->casts[$field->getAttribute('name')] = $field->getAttribute('cast'); + $cast=$field->getAttribute('cast', false) + if ($cast!== false) { + if(is_array($cast)){ + foreach ($cast as $name=>$type) { + $this->casts[$name] = $type; + } + }else { + $this->casts[$field->getAttribute('name')] = $cast; + } } } - return $field; } -- 2.39.5