/** * @param $formName * @param array $formParams * @param DunglasResource $dunglasResource * @return array */ protected function processFormParams($formName, array $formParams, DunglasResource $dunglasResource) { if (!is_null($formParams) && isset($formParams[$formName]['children'])) { $parameters = $formParams[$formName]['children']; $entityClass = $dunglasResource->getEntityClass(); $metadataAttributes = $this->classMetadataFactory->getMetadataFor(new $entityClass())->getAttributes(); $classMetadata = $this->entityManager->getClassMetadata($entityClass); $metadataAttributesValidation = isset($this->attributesValidationParser[$dunglasResource->getShortName()]) ? $this->attributesValidationParser[$dunglasResource->getShortName()] : []; foreach ($parameters as $key => $val) { if ($parameters[$key]['dataType'] === 'hidden') { unset($parameters[$key]); continue; } $format = isset($parameters[$key]['format']) ? $parameters[$key]['format'] : null; $metatdataKey = strtolower($key); if (isset($metadataAttributes[$key])) { $metatdataKey = $key; } $metatdata = isset($metadataAttributes[$metatdataKey]) ? $metadataAttributes[$metatdataKey] : null; if (is_string($format) && is_object(json_decode($format))) { $parameters[$key]['format'] = '[' . implode('|', array_keys(json_decode($format, true))) . ']'; } if (!is_null($metatdata) && count($metatdata->getTypes()) > 0) { $property = $metatdata->getTypes()[0]; if ($property->getType() === 'object' && $parameters[$key]['dataType'] !== 'boolean') { $parameters[$key]['dataType'] = 'id of ' . $key; } if ($property->getClass() === 'Doctrine\\Common\\Collections\\Collection') { $parameters[$key]['dataType'] = 'array of ' . $property->getType(); } } if ($parameters[$key]['dataType'] === 'boolean') { $parameters[$key]['format'] = '[false|true]'; } if (is_null($format) && $parameters[$key]['dataType'] === 'string') { if (isset($metadataAttributesValidation[$key]['format']) && $metadataAttributesValidation[$key]['format'] !== '{not blank}') { $parameters[$key]['format'] = $metadataAttributesValidation[$key]['format']; } else { if ($classMetadata->hasField($key)) { $metatdataOrm = $classMetadata->getFieldMapping($key); $maxLenght = isset($metatdataOrm['length']) ? $metatdataOrm['length'] : '255'; $parameters[$key]['format'] = '{length: max: ' . $maxLenght . '}'; } } } } return $parameters; } return $formParams; }
/** * @param ResourceInterface $resource * * @return AttributeMetadataInterface */ private function getIdentifierFromResource(ResourceInterface $resource) { $classMetadata = $this->classMetadataFactory->getMetadataFor($resource->getEntityClass(), $resource->getNormalizationGroups(), $resource->getDenormalizationGroups(), $resource->getValidationGroups()); return $classMetadata->getIdentifier(); }