/**
  * @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;
 }
예제 #2
0
 /**
  * @param FormMetadata $refObject
  * @return void
  */
 public function merge(FormMetadata $refObject)
 {
     $this->fields = array_merge($this->fields, $refObject->getFields());
     $this->groups = array_merge($this->groups, $refObject->getGroups());
     $this->formTypes = array_merge($this->formTypes, $refObject->getFormTypes());
     $this->fieldEntities = array_merge($this->fieldEntities, $refObject->getFieldEntities());
 }