File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44use verbb \formie \Formie ;
55use verbb \formie \base \Field ;
66use verbb \formie \base \FieldInterface ;
7- use verbb \formie \base \NestedFieldInterface ;
87use verbb \formie \base \SubFieldInterface ;
98use verbb \formie \base \SubFieldInnerFieldInterface ;
109use verbb \formie \elements \Form ;
@@ -640,7 +639,12 @@ public function saveLayout(FieldLayout $layout): bool
640639 $ transaction = Craft::$ app ->getDb ()->beginTransaction ();
641640
642641 // Use `unserialize/serialize` instead of `clone()` to deeply clone objects.
643- $ previousPages = unserialize (serialize ($ layout ->getPages ()));
642+ // Fallback to model re-instantiation if some field state includes closures.
643+ try {
644+ $ previousPages = unserialize (serialize ($ layout ->getPages ()));
645+ } catch (Throwable $ e ) {
646+ $ previousPages = array_map (fn (array $ page ) => new FieldLayoutPage ($ page ), $ layout ->getFormBuilderConfig ());
647+ }
644648
645649 foreach ($ layout ->getPages () as $ pageKey => $ page ) {
646650 $ page ->layoutId = $ layout ->id ;
You can’t perform that action at this time.
0 commit comments