nova-flexible-content icon indicating copy to clipboard operation
nova-flexible-content copied to clipboard

json_decode receives array $value on casted json value

Open pitylee opened this issue 2 years ago • 0 comments

So after trying my best to implement json field without luck, I have using with array->field on the field that would be nested.

By doing this, I receive the following error:

json_decode(): Argument #1 ($json) must be of type string, array given

On HasAttribute trait fromJson method the $value is already an array.

Maybe this has something to do with the workaround I used for the flexible resolver, because the nested Flexible is sending the parent's Layout, and not a model

(Like mentioned in https://github.com/whitecube/nova-flexible-content/issues/321):

 public function set($resourceModel, $attribute, $groups)
    {
        if ($resourceModel->description ?? false) {
            $model = Model::firstOrCreate([
                'description' => $resourceModel->description,
            ]);
        }

        if (!$model) {
            return collect([]);
        }

// ...

Debug: { "message": "json_decode(): Argument #1 ($json) must be of type string, array given", "exception": "TypeError", "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php", "line": 1158, "trace": [ { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php", "line": 1158, "function": "json_decode" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php", "line": 1114, "function": "fromJson", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php", "line": 1094, "function": "getArrayAttributeByKey", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php", "line": 1019, "function": "getArrayAttributeWithValue", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php", "line": 907, "function": "fillJsonAttribute", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Layouts/Layout.php", "line": 451, "function": "setAttribute", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 386, "function": "__set", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 368, "function": "fillAttributeFromRequest", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 347, "function": "fillAttribute", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 321, "function": "fillInto", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Layouts/Layout.php", "line": 332, "function": "fill", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "function": "Whitecube\\NovaFlexibleContent\\Layouts\\{closure}", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php", "line": 677, "function": "array_map" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Layouts/Layout.php", "line": 333, "function": "map", "class": "Illuminate\\Support\\Collection", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Flexible.php", "line": 348, "function": "fill", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "function": "Whitecube\\NovaFlexibleContent\\{closure}", "class": "Whitecube\\NovaFlexibleContent\\Flexible", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php", "line": 677, "function": "array_map" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Flexible.php", "line": 351, "function": "map", "class": "Illuminate\\Support\\Collection", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Flexible.php", "line": 308, "function": "syncAndFillGroups", "class": "Whitecube\\NovaFlexibleContent\\Flexible", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 347, "function": "fillAttribute", "class": "Whitecube\\NovaFlexibleContent\\Flexible", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 321, "function": "fillInto", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Layouts/Layout.php", "line": 332, "function": "fill", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "function": "Whitecube\\NovaFlexibleContent\\Layouts\\{closure}", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php", "line": 677, "function": "array_map" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Layouts/Layout.php", "line": 333, "function": "map", "class": "Illuminate\\Support\\Collection", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Flexible.php", "line": 348, "function": "fill", "class": "Whitecube\\NovaFlexibleContent\\Layouts\\Layout", "type": "->" }, { "function": "Whitecube\\NovaFlexibleContent\\{closure}", "class": "Whitecube\\NovaFlexibleContent\\Flexible", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php", "line": 677, "function": "array_map" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Flexible.php", "line": 351, "function": "map", "class": "Illuminate\\Support\\Collection", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Flexible.php", "line": 308, "function": "syncAndFillGroups", "class": "Whitecube\\NovaFlexibleContent\\Flexible", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 347, "function": "fillAttribute", "class": "Whitecube\\NovaFlexibleContent\\Flexible", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Fields/Field.php", "line": 321, "function": "fillInto", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/HigherOrderCollectionProxy.php", "line": 60, "function": "fill", "class": "Laravel\\Nova\\Fields\\Field", "type": "->" }, { "function": "Illuminate\\Support\\{closure}", "class": "Illuminate\\Support\\HigherOrderCollectionProxy", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/Collection.php", "line": 677, "function": "array_map" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Collections/HigherOrderCollectionProxy.php", "line": 61, "function": "map", "class": "Illuminate\\Support\\Collection", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/FillsFields.php", "line": 85, "function": "__call", "class": "Illuminate\\Support\\HigherOrderCollectionProxy", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/FillsFields.php", "line": 35, "function": "fillFields", "class": "Laravel\\Nova\\Resource", "type": "::" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Controllers/ResourceUpdateController.php", "line": 32, "function": "fillForUpdate", "class": "Laravel\\Nova\\Resource", "type": "::" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php", "line": 29, "function": "Laravel\\Nova\\Http\\Controllers\\{closure}", "class": "Laravel\\Nova\\Http\\Controllers\\ResourceUpdateController", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php", "line": 388, "function": "transaction", "class": "Illuminate\\Database\\Connection", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php", "line": 261, "function": "__call", "class": "Illuminate\\Database\\DatabaseManager", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Controllers/ResourceUpdateController.php", "line": 41, "function": "__callStatic", "class": "Illuminate\\Support\\Facades\\Facade", "type": "::" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php", "line": 54, "function": "handle", "class": "Laravel\\Nova\\Http\\Controllers\\ResourceUpdateController", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php", "line": 45, "function": "callAction", "class": "Illuminate\\Routing\\Controller", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php", "line": 262, "function": "dispatch", "class": "Illuminate\\Routing\\ControllerDispatcher", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php", "line": 205, "function": "runController", "class": "Illuminate\\Routing\\Route", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 695, "function": "run", "class": "Illuminate\\Routing\\Route", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 128, "function": "Illuminate\\Routing\\{closure}", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/whitecube/nova-flexible-content/src/Http/Middleware/InterceptFlexibleAttributes.php", "line": 33, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Whitecube\\NovaFlexibleContent\\Http\\Middleware\\InterceptFlexibleAttributes", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Middleware/Authorize.php", "line": 18, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Laravel\\Nova\\Http\\Middleware\\Authorize", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Middleware/BootTools.php", "line": 20, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Laravel\\Nova\\Http\\Middleware\\BootTools", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Middleware/DispatchServingNovaEvent.php", "line": 20, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Laravel\\Nova\\Http\\Middleware\\DispatchServingNovaEvent", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php", "line": 50, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php", "line": 44, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Middleware/Authenticate.php", "line": 31, "function": "handle", "class": "Illuminate\\Auth\\Middleware\\Authenticate", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Laravel\\Nova\\Http\\Middleware\\Authenticate", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php", "line": 78, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php", "line": 49, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php", "line": 121, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php", "line": 64, "function": "handleStatefulRequest", "class": "Illuminate\\Session\\Middleware\\StartSession", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Session\\Middleware\\StartSession", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php", "line": 37, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php", "line": 67, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 103, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 697, "function": "then", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 672, "function": "runRouteWithinStack", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 636, "function": "runRoute", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 625, "function": "dispatchToRoute", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", "line": 167, "function": "dispatch", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 128, "function": "Illuminate\\Foundation\\Http\\{closure}", "class": "Illuminate\\Foundation\\Http\\Kernel", "type": "->" }, { "file": "/var/www/html/vendor/laravel/nova/src/Http/Middleware/ServeNova.php", "line": 24, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Laravel\\Nova\\Http\\Middleware\\ServeNova", "type": "->" }, { "file": "/var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php", "line": 67, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Barryvdh\\Debugbar\\Middleware\\InjectDebugbar", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php", "line": 21, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php", "line": 31, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php", "line": 21, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php", "line": 40, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php", "line": 27, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php", "line": 86, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance", "type": "->" }, { "file": "/var/www/html/vendor/fruitcake/laravel-cors/src/HandleCors.php", "line": 38, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Fruitcake\\Cors\\HandleCors", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php", "line": 39, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 167, "function": "handle", "class": "Illuminate\\Http\\Middleware\\TrustProxies", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 103, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", "line": 142, "function": "then", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", "line": 111, "function": "sendRequestThroughRouter", "class": "Illuminate\\Foundation\\Http\\Kernel", "type": "->" }, { "file": "/var/www/html/public/index.php", "line": 52, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Kernel", "type": "->" }, { "file": "/var/www/html/server.php", "line": 21, "function": "require_once" } ] }

pitylee avatar Jan 25 '22 19:01 pitylee