BuildForm(); } catch (Exception $ex) { throw new FormsException('Unable to construct demonstrator form.', 0, $ex); } } /** @inheritdoc */ public function GetFormType(): string { return FormType::class; } /** @inheritdoc */ public function InitOptions(): array { return [ 'compound' => true ]; } /** * Add a child form. * * @param string $sType block class name * @param string $sName block name * @param array $aOptions options * * @return $this */ public function Add(string $sType, string $sName, array $aOptions): AbstractFormBlock { $oSubFormBlock = new ($sType)($sName, $aOptions); $this->aChildrenBlocks[$sName] = $oSubFormBlock; $oSubFormBlock->SetParent($this); return $oSubFormBlock; } /** * Get the children forms. * * @return array */ public function GetChildren(): array { return $this->aChildrenBlocks; } /** * Return a child block. * * @param string $sName name of the block * * @return AbstractFormBlock */ public function Get(string $sName): AbstractFormBlock { return $this->aChildrenBlocks[$sName]; } /** * Build the form. * * @return void */ protected function BuildForm(): void { } }