/**
* @throws \RuntimeException
* @return object[]
*/
public function findGroups()
{
$formGroups = $visitedGroups = array();
foreach ($this->priorGroups as $i => $group) {
if (!$group instanceof Nette\Forms\ControlGroup) {
if (!($group = $this->form->getGroup($group))) {
$groupName = (string) $this->priorGroups[$i];
throw new \RuntimeException("Form has no group {$groupName}.");
}
}
$visitedGroups[] = $group;
if ($group = $this->processGroup($group)) {
$formGroups[] = $group;
}
}
foreach ($this->form->groups as $group) {
if (!in_array($group, $visitedGroups, TRUE) && ($group = $this->processGroup($group))) {
$formGroups[] = $group;
}
}
return $formGroups;
}