/**
  * {@inheritdoc}
  */
 protected function getChoices($entityName, $withRelations, $withVirtualFields)
 {
     $choiceFields = [];
     $choiceRelations = [];
     $idFieldNames = $this->doctrineHelper->getEntityIdentifierFieldNames($entityName);
     foreach ($this->getEntityFields($entityName, $withRelations, $withVirtualFields) as $fieldName => $field) {
         $formConfig = $this->formConfigProvider->getConfig($entityName, $fieldName);
         if ($formConfig->is('is_enabled', false) || in_array($fieldName, $idFieldNames)) {
             // field is not enabled for displaying in forms
             // or field is entity identifier
             continue;
         }
         if (!isset($field['relation_type'])) {
             $choiceFields[$fieldName] = $field['label'];
         } elseif (!in_array($field['relation_type'], RelationType::$toManyRelations)) {
             // enable only mass update for *-to-one relations
             $choiceRelations[$fieldName] = $field['label'];
         }
     }
     if (empty($choiceRelations)) {
         return $choiceFields;
     }
     $choices = [];
     if (!empty($choiceFields)) {
         $choices[$this->translator->trans('oro.entity.form.entity_fields')] = $choiceFields;
     }
     $choices[$this->translator->trans('oro.entity.form.entity_related')] = $choiceRelations;
     return $choices;
 }
예제 #2
0
 public function testGetEntityIdentifierFieldNamesNotManageableEntity()
 {
     $entity = $this->getMock('FooEntity');
     $this->setExpectedException('Oro\\Bundle\\EntityBundle\\Exception\\NotManageableEntityException', sprintf('Entity class "%s" is not manageable', get_class($entity)));
     $this->registry->expects($this->once())->method('getManagerForClass')->with(get_class($entity))->will($this->returnValue(null));
     $this->doctrineHelper->getEntityIdentifierFieldNames($entity);
 }