/** * @static * @param ElementInterface $element * @param array|\ArrayAccess|\Traversable $data * @return null|array|\ArrayAccess|\Traversable */ protected static function filterFormData(ElementInterface $element, $data) { if (!$data && $element instanceof Collection && $element->getOption('count') == 0) { return null; } if (is_array($data)) { if ($element instanceof Collection) { // Collections are to be recursed foreach ($data as $key => $value) { $data[$key] = static::filterFormData($element->getTargetElement(), $value); } } elseif ($element instanceof FieldsetInterface) { // Fieldsets are to be recursed foreach ($data as $key => $value) { if ($element->has($key)) { $data[$key] = static::filterFormData($element->get($key), $value); } else { unset($data[$key]); } } } else { // Array for a normal element, make sure there is ANY data in the array if (count(array_filter($data)) > 0) { return $data; } else { return null; // null?; } } } return $data; }