/** * Helper method. Retrieves all elements from fieldset the $element belongs to. * * @param ElementInterface $element * @param FieldsetInterface $fieldset * @return array|\Traversable */ protected function getFieldsetElements(ElementInterface $element, FieldsetInterface $fieldset) { $elementName = $this->normalizeElementName($element->getName()); if ($fieldset->has($elementName) && $fieldset->get($elementName) === $element) { return array_merge($fieldset->getElements(), $fieldset->getFieldsets()); } if ($fieldset instanceof Element\Collection && (($elements = $this->getFieldsetElements($element, $fieldset->getTargetElement())) || ($template = $fieldset->getTemplateElement()) && ($elements = $this->getFieldsetElements($element, $template)))) { return $elements; } foreach ($fieldset->getFieldsets() as $fieldsetElement) { if ($elements = $this->getFieldsetElements($element, $fieldsetElement)) { return $elements; } } return []; }