/**
  * @param \ReflectionClass $class
  * @return FormMetadata
  */
 private function getClassFormFields(\ReflectionClass $class)
 {
     $metadata = new FormMetadata();
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     /** @var \ReflectionProperty[] $properties */
     $properties = $class->getProperties();
     foreach ($properties as $property) {
         $field = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\Field');
         $fieldGroup = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\FieldGroup');
         $formType = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\FormType');
         $fieldEntity = $reader->getPropertyAnnotation($property, 'Corleonis\\FormMetadataBundle\\Configuration\\FieldEntity');
         // prepare the option fields for our field
         if ($field && $field->value) {
             $preparer = FieldOptionPreparerFactory::get($field->value);
             if ($preparer) {
                 $preparer->prepare($field);
             }
         }
         if (!empty($fieldGroup) && !empty($field)) {
             if (empty($field->name)) {
                 $field->name = $property->getName();
             }
             $metadata->addGroup($fieldGroup, $field);
         } elseif (!empty($field)) {
             if (empty($field->name)) {
                 $field->name = $property->getName();
             }
             $metadata->addField($field);
         }
         if (!empty($formType)) {
             if (empty($field->name)) {
                 $formType->name = $property->getName();
             }
             $metadata->addFormType($formType);
         }
         if (!empty($fieldEntity)) {
             if (empty($field->name)) {
                 $fieldEntity->name = $property->getName();
             }
             $metadata->addFieldEntity($fieldEntity);
         }
     }
     return $metadata;
 }
 /**
  * @param LoadClassMetadataEventArgs $eventArgs
  */
 public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
 {
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $meta = $eventArgs->getClassMetadata();
     foreach ($meta->getReflectionClass()->getProperties() as $property) {
         if ($meta->isMappedSuperclass && !$property->isPrivate() || $meta->isInheritedField($property->name) || isset($meta->associationMappings[$property->name]['inherited'])) {
             continue;
         }
         /** @var $annotation \Snowcap\ImBundle\Doctrine\Mapping\Mogrify */
         if ($annotation = $reader->getPropertyAnnotation($property, 'Snowcap\\ImBundle\\Doctrine\\Mapping\\Mogrify')) {
             $field = $property->getName();
             $this->config[$meta->getTableName()]['fields'][$field] = array('property' => $property, 'params' => $annotation->params);
         }
     }
 }
 /**
  * Read the entity and create an associated metadata
  * @param $entity
  * @return null|FormMetadata
  */
 public function getMetadata($entity)
 {
     $metadata = new FormMetadata();
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $reflectionClass = new \ReflectionClass(get_class($entity));
     while (is_object($reflectionClass)) {
         $properties = $reflectionClass->getProperties();
         foreach ($properties as $property) {
             $field = $reader->getPropertyAnnotation($property, 'FlintLabs\\Bundle\\FormMetadataBundle\\Configuration\\Field');
             if (!empty($field)) {
                 if (empty($field->name)) {
                     $field->name = $property->getName();
                 }
                 $metadata->addField($field);
             }
         }
         $reflectionClass = $reflectionClass->getParentClass();
     }
     return $metadata;
 }
Ejemplo n.º 4
0
 public function getMetadata($className)
 {
     $reflClass = new \ReflectionClass($className);
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $metadata = new ElementMetadata();
     $metadata->class = $className;
     foreach ($reflClass->getProperties() as $reflProp) {
         $annot = $reader->getPropertyAnnotation($reflProp, 'Broda\\Component\\Rest\\Annotation\\Client\\Identifier');
         if (null !== $annot) {
             $metadata->identifier = $reflProp->getName();
             break;
             // o resto dos campos são ignorados
         }
     }
     if (!$metadata->identifier) {
         if (!$reflClass->hasProperty('id')) {
             throw new \RuntimeException(sprintf('A classe %s precisa de um identifier ' . '(ou "id" ou uma propriedade com a anotação @Identifier)', $className));
         }
         $metadata->identifier = 'id';
     }
     return $metadata;
 }