Exemple #1
0
 /**
  * @param string $className
  * @param array  $originalFieldNames
  * @return array
  */
 protected function getReverseRelationTypes($className, array &$originalFieldNames)
 {
     $extendProvider = $this->configManager->getProvider('extend');
     $entityConfig = $extendProvider->getConfig($className);
     $entityProvider = $this->configManager->getProvider('entity');
     $result = [];
     if ($entityConfig->is('relation')) {
         $relations = $entityConfig->get('relation');
         foreach ($relations as $relationKey => $relation) {
             if (!$this->isAvailableRelation($extendProvider, $relation, $relationKey)) {
                 continue;
             }
             /** @var FieldConfigId $fieldId */
             $fieldId = $relation['field_id'];
             /** @var FieldConfigId $targetFieldId */
             $targetFieldId = $relation['target_field_id'];
             $entityLabel = $entityProvider->getConfig($targetFieldId->getClassName())->get('label');
             $fieldLabel = $entityProvider->getConfigById($targetFieldId)->get('label');
             $fieldName = $fieldId ? $fieldId->getFieldName() : '';
             $maxFieldNameLength = $this->nameGenerator->getMaxCustomEntityFieldNameSize();
             if (strlen($fieldName) > $maxFieldNameLength) {
                 $cutFieldName = substr($fieldName, 0, $maxFieldNameLength);
                 $originalFieldNames[$cutFieldName] = $fieldName;
                 $fieldName = $cutFieldName;
             }
             $key = $relationKey . '||' . $fieldName;
             $result[$key] = $this->translator->trans(self::TYPE_LABEL_PREFIX . 'inverse_relation', ['%entity_name%' => $this->translator->trans($entityLabel), '%field_name%' => $this->translator->trans($fieldLabel)]);
         }
     }
     return $result;
 }