/** * Render form control * * @param Element $element * @param Group $container */ protected function renderControl(Element $element, Group $container) { // Input group for prepend/append $useInputGroup = $element->getComponent('input-group') && ($element->getOption('prepend') != '' || $element->getOption('append') != '') && $element->getOption('label') !== 'inside'; if ($useInputGroup) { $group = $element->getComponent('input-group'); $container->add($group); } else { $group = $container; // Or just use container } // Prepend $labeledButton = static::isButton($element) && $element->hasClass('btn-labeled'); if (!$labeledButton && $element->getOption('prepend')) { $group->add($element->getComponent('prepend')); } // Element $el = $element->renderElement(); if ($element->getOption('label') === 'inside') { $el = $element->getComponent('label')->setContent($el); } $group->add($el); // Append if (!$labeledButton && $element->getOption('append')) { $group->add($element->getComponent('append')); } // Help block if ($element->getComponent('help') && $element->getOption('help')) { $container->add($element->getComponent('help')); } // Error if (method_exists($element, 'getError')) { $error = $element->getError(); if ($error) { $element->begin('span', [], ['class' => 'help-block error'])->setContent($error); } } }
/** * Get all options. * Bubbles to combine options of parent/ancestors. * * @return array */ public function getOptions() { $defaults = isset($this->parent) ? $this->parent->getOptions() : FormBuilder::$options; $options = $this->options + $defaults; return $options; }