$this->aDescriptions, 'data' => $this->aData, ]; // merge each adapter data... foreach ($this->GetAllAdapters() as $oAdapter){ $aResult['descriptions'] = array_merge($aResult['descriptions'], $oAdapter->GetFormDescriptions()); $aResult['data'] = array_merge($aResult['data'], $oAdapter->GetFormData()); } return $aResult; } /** * Create an object adapter. * * @param \DBObject $oDBObject * @param bool $bGroup * * @return \Combodo\iTop\FormSDK\Service\FactoryAdapter\FormFactoryObjectAdapter */ public function CreateObjectAdapter(DBObject $oDBObject, bool $bGroup = true) : FormFactoryObjectAdapter { $oObjectBuilder = new FormFactoryObjectAdapter($oDBObject, $bGroup); $this->AddAdapter(get_class($oDBObject) . '_' . $oDBObject->GetKey(), $oObjectBuilder); return $oObjectBuilder; } /** * Add an adapter. * * @param string $sKey * @param \Combodo\iTop\FormSDK\Service\FactoryAdapter\FormFactoryAdapterInterface $oAdapter * * @return $this */ public function AddAdapter(string $sKey, FormFactoryAdapterInterface $oAdapter) : FormFactory { $this->aAdapters[$sKey] = $oAdapter; return $this; } /** * Get all adapters. * * @return \Combodo\iTop\FormSDK\Service\FactoryAdapter\FormFactoryAdapterInterface[] */ public function GetAllAdapters() : array { return $this->aAdapters; } /** * Get form. * * @param string|null $sName * @return mixed */ public function GetForm(?string $sName = null) : mixed { ['descriptions' => $aDescriptions, 'data' => $aData] = $this->GetFormDescriptionsAndData(); return $this->oSymfonyBridge->GetForm($aDescriptions, $aData, $sName); } }