/** * Filters the item to keep only association related fields * * @param array $item * * @return array */ protected function filter(array $item) { $expectedFields = [$this->attrColumnsResolver->resolveIdentifierField(), 'associations']; foreach (array_keys($item) as $fieldName) { if (!in_array($fieldName, $expectedFields)) { unset($item[$fieldName]); } } return $item; }
/** * @param array $item * * @throws StructureArrayConversionException */ protected function validateOptionalFields(array $item) { $optionalFields = array_merge(['family', 'enabled', 'categories', 'groups'], $this->attrColumnsResolver->resolveAttributeColumns(), $this->getOptionalAssociationFields()); // index $optionalFields by keys to improve performances $optionalFields = array_combine($optionalFields, $optionalFields); $unknownFields = []; foreach (array_keys($item) as $field) { if (!isset($optionalFields[$field])) { $unknownFields[] = $field; } } if (0 < count($unknownFields)) { $message = count($unknownFields) > 1 ? 'The fields "%s" do not exist' : 'The field "%s" does not exist'; throw new StructureArrayConversionException(sprintf($message, implode(', ', $unknownFields))); } }