eZ\Publish\Core\Repository\Helper\ContentTypeDomainMapper::buildFieldDefinitionDomainObject PHP Method

buildFieldDefinitionDomainObject() public method

Builds a FieldDefinition domain object from value object returned by persistence.
public buildFieldDefinitionDomainObject ( eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition $spiFieldDefinition ) : eZ\Publish\API\Repository\Values\ContentType\FieldDefinition
$spiFieldDefinition eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition
return eZ\Publish\API\Repository\Values\ContentType\FieldDefinition
    public function buildFieldDefinitionDomainObject(SPIFieldDefinition $spiFieldDefinition)
    {
        /** @var $fieldType \eZ\Publish\SPI\FieldType\FieldType */
        $fieldType = $this->fieldTypeRegistry->getFieldType($spiFieldDefinition->fieldType);
        $fieldDefinition = new FieldDefinition(array('names' => $spiFieldDefinition->name, 'descriptions' => $spiFieldDefinition->description, 'id' => $spiFieldDefinition->id, 'identifier' => $spiFieldDefinition->identifier, 'fieldGroup' => $spiFieldDefinition->fieldGroup, 'position' => $spiFieldDefinition->position, 'fieldTypeIdentifier' => $spiFieldDefinition->fieldType, 'isTranslatable' => $spiFieldDefinition->isTranslatable, 'isRequired' => $spiFieldDefinition->isRequired, 'isInfoCollector' => $spiFieldDefinition->isInfoCollector, 'defaultValue' => $fieldType->fromPersistenceValue($spiFieldDefinition->defaultValue), 'isSearchable' => !$fieldType->isSearchable() ? false : $spiFieldDefinition->isSearchable, 'fieldSettings' => (array) $spiFieldDefinition->fieldTypeConstraints->fieldSettings, 'validatorConfiguration' => (array) $spiFieldDefinition->fieldTypeConstraints->validators));
        return $fieldDefinition;
    }

Usage Example

 /**
  * Fetches the list of available Field identifiers in the token and returns
  * an array of their current title value.
  *
  * @see \eZ\Publish\Core\Repository\FieldType::getName()
  *
  * @param string[] $schemaIdentifiers
  * @param \eZ\Publish\SPI\Persistence\Content\Type|\eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
  * @param array $fieldMap
  * @param string $languageCode
  *
  * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentType
  *
  * @return string[] Key is the field identifier, value is the title value
  */
 protected function getFieldTitles(array $schemaIdentifiers, $contentType, array $fieldMap, $languageCode)
 {
     $fieldTitles = array();
     foreach ($schemaIdentifiers as $fieldDefinitionIdentifier) {
         if (isset($fieldMap[$fieldDefinitionIdentifier][$languageCode])) {
             if ($contentType instanceof SPIContentType) {
                 $fieldDefinition = null;
                 foreach ($contentType->fieldDefinitions as $spiFieldDefinition) {
                     if ($spiFieldDefinition->identifier === $fieldDefinitionIdentifier) {
                         $fieldDefinition = $this->contentTypeDomainMapper->buildFieldDefinitionDomainObject($spiFieldDefinition);
                         break;
                     }
                 }
                 if ($fieldDefinition === null) {
                     $fieldTitles[$fieldDefinitionIdentifier] = '';
                     continue;
                 }
             } elseif ($contentType instanceof ContentType) {
                 $fieldDefinition = $contentType->getFieldDefinition($fieldDefinitionIdentifier);
             } else {
                 throw new InvalidArgumentType('$contentType', 'API or SPI variant of ContentType');
             }
             $nameableFieldTypeService = $this->nameableFieldTypeRegistry->getFieldType($fieldDefinition->fieldTypeIdentifier);
             $fieldTitles[$fieldDefinitionIdentifier] = $nameableFieldTypeService->getFieldName($fieldMap[$fieldDefinitionIdentifier][$languageCode], $fieldDefinition, $languageCode);
         }
     }
     return $fieldTitles;
 }