3
3
namespace Whitecube \NovaFlexibleContent \Value ;
4
4
5
5
use Illuminate \Support \Collection ;
6
+ use Whitecube \NovaFlexibleContent \Layouts \Collection as LayoutsCollection ;
7
+ use Whitecube \NovaFlexibleContent \Layouts \Layout ;
6
8
7
9
class Resolver implements ResolverInterface
8
10
{
@@ -39,11 +41,14 @@ public function get($resource, $attribute, $layouts)
39
41
$ value = $ this ->extractValueFromResource ($ resource , $ attribute );
40
42
41
43
return collect ($ value )->map (function ($ item ) use ($ layouts ) {
42
- $ layout = $ layouts ->find ($ item ->layout );
44
+ $ layout = $ layouts ->find ($ item instanceof Layout ? $ item -> name () : $ item ->layout );
43
45
44
46
if (!$ layout ) return ;
45
47
46
- return $ layout ->duplicateAndHydrate ($ item ->key , (array ) $ item ->attributes );
48
+ $ key = $ item instanceof Layout ? $ item ->key () : $ item ->key ;
49
+ $ attributes = $ item instanceof Layout ? $ item ->getAttributes () : (array ) $ item ->attributes ;
50
+
51
+ return $ layout ->duplicateAndHydrate ($ key , $ attributes );
47
52
})->filter ()->values ();
48
53
}
49
54
@@ -58,7 +63,9 @@ protected function extractValueFromResource($resource, $attribute)
58
63
{
59
64
$ value = data_get ($ resource , str_replace ('-> ' , '. ' , $ attribute )) ?? [];
60
65
61
- if ($ value instanceof Collection) {
66
+ if ($ value instanceof LayoutsCollection) {
67
+ $ value = $ value ->all ();
68
+ } elseif ($ value instanceof Collection) {
62
69
$ value = $ value ->toArray ();
63
70
} else if (is_string ($ value )) {
64
71
$ value = json_decode ($ value ) ?? [];
0 commit comments