コード例 #1
0
 /**
  * @param Resource $resource
  */
 public function addResource($resource)
 {
     $version = $resource->getVersion();
     $entityClass = $resource->getEntityClass();
     if (isset($this->entityClassIndex[$version][$entityClass])) {
         throw new \InvalidArgumentException(sprintf('A Resource class already exists for "%s".', $entityClass));
     }
     $shortName = $resource->getShortName();
     if (isset($this->shortNameIndex[$version][$shortName])) {
         throw new \InvalidArgumentException(sprintf('A Resource class with the short name "%s" already exists.', $shortName));
     }
     $this->append($resource);
     $this->entityClassIndex[$version][$entityClass] = $resource;
     $this->shortNameIndex[$version][$shortName] = $resource;
     foreach ($resource->getAlias() as $alias) {
         if (!class_exists($alias)) {
             $this->shortNameIndex[$version][$alias] = $resource;
             continue;
         }
         $this->entityClassIndex[$version][$alias] = $resource;
     }
 }
コード例 #2
0
 /**
  * @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;
 }