From a4da05efee7ad82edef3b117a2c196f337810eaf Mon Sep 17 00:00:00 2001 From: Eric Espie Date: Thu, 17 Apr 2025 17:49:33 +0200 Subject: [PATCH] SDK Form demonstrator fix recursive field hiding --- sources/Forms/Dependency/DependencyNode.php | 2 +- sources/Forms/FormType/Base/FormBuilder.php | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sources/Forms/Dependency/DependencyNode.php b/sources/Forms/Dependency/DependencyNode.php index d82eacca2..452293264 100644 --- a/sources/Forms/Dependency/DependencyNode.php +++ b/sources/Forms/Dependency/DependencyNode.php @@ -51,7 +51,7 @@ class DependencyNode implements \Iterator { $aResult = []; foreach ($this as $oChildNode) { - $aResult = array_merge($aResult, $oChildNode->GetSubNodes()); + $aResult = array_merge($aResult, [$oChildNode], $oChildNode->GetSubNodes()); } return $aResult; diff --git a/sources/Forms/FormType/Base/FormBuilder.php b/sources/Forms/FormType/Base/FormBuilder.php index c5055c547..b888653b0 100644 --- a/sources/Forms/FormType/Base/FormBuilder.php +++ b/sources/Forms/FormType/Base/FormBuilder.php @@ -32,6 +32,10 @@ class FormBuilder implements FormBuilderInterface, \IteratorAggregate { $this->oDependencies = new DependencyGraph(); + $this->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { + $this->Finalize(); + }); + $this->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $this->aModelData = []; }); @@ -72,6 +76,7 @@ class FormBuilder implements FormBuilderInterface, \IteratorAggregate private function HideField(FormInterface $oForm, string $sName): void { + \IssueLog::Info("Hiding field $sName"); $oForm->add($sName, HiddenType::class, ['mapped' => false]); }