/** * @internal * @param \Nette\Forms\ControlGroup $group * @return object */ public function processGroup(\Nette\Forms\ControlGroup $group) { if (!$group->getOption('visual') || !$group->getControls()) { return NULL; } $groupLabel = $group->getOption('label'); $groupDescription = $group->getOption('description'); // If we have translator, translate! if ($translator = $this->form->getTranslator()) { if (!$groupLabel instanceof Html) { $groupLabel = $translator->translate($groupLabel); } if (!$groupDescription instanceof Html) { $groupDescription = $translator->translate($groupDescription); } } $controls = array_filter($group->getControls(), function (Controls\BaseControl $control) { return !$control->getOption('rendered') && !$control instanceof Controls\HiddenField; }); if (!$controls) { return NULL; // do not render empty groups } $groupAttrs = $group->getOption('container', Html::el())->setName(NULL); /** @var Html $groupAttrs */ $groupAttrs->attrs += array_diff_key($group->getOptions(), array_fill_keys(array('container', 'label', 'description', 'visual', 'template'), NULL)); // fake group return (object) (array('controls' => $controls, 'label' => $groupLabel, 'description' => $groupDescription, 'attrs' => $groupAttrs) + $group->getOptions()); }