Ejemplo n.º 1
0
 /**
  * @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;
 }