本文整理汇总了PHP中eZ\Publish\API\Repository\Repository::getFieldTypeService方法的典型用法代码示例。如果您正苦于以下问题:PHP Repository::getFieldTypeService方法的具体用法?PHP Repository::getFieldTypeService怎么用?PHP Repository::getFieldTypeService使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eZ\Publish\API\Repository\Repository
的用法示例。
在下文中一共展示了Repository::getFieldTypeService方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getFieldRelations
/**
* Returns field relations data for the current version of the given $contentInfo.
*
* @param \eZ\Publish\API\Repository\Values\Content\ContentInfo $contentInfo
*
* @return mixed
*/
public function getFieldRelations(ContentInfo $contentInfo)
{
$relations = array();
$locationIdToContentIdMapping = array();
$content = $this->repository->getContentService()->loadContentByContentInfo($contentInfo);
foreach ($content->getFields() as $field) {
$fieldDefinition = $content->contentType->getFieldDefinition($field->fieldDefIdentifier);
$fieldType = $this->repository->getFieldTypeService()->buildFieldType($fieldDefinition->fieldTypeIdentifier);
$this->appendFieldRelations($relations, $locationIdToContentIdMapping, $fieldType, $fieldType->acceptValue($field->value), $fieldDefinition->id);
}
return $relations;
}
示例2: getFieldTypeService
/**
* Get FieldTypeService
*
* @return \eZ\Publish\API\Repository\FieldTypeService
*/
public function getFieldTypeService()
{
if ($this->fieldTypeService !== null) {
return $this->fieldTypeService;
}
$this->fieldTypeService = new FieldTypeService($this->repository->getFieldTypeService(), $this->signalDispatcher);
return $this->fieldTypeService;
}
示例3: getFieldTitles
/**
* 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\API\Repository\Values\ContentType\ContentType $contentType $fieldDefinitions
* @param array $fieldMap
* @param string $languageCode
*
* @return string[] Key is the field identifier, value is the title value
*/
protected function getFieldTitles(array $schemaIdentifiers, ContentType $contentType, array $fieldMap, $languageCode)
{
$fieldTitles = array();
foreach ($schemaIdentifiers as $fieldDefinitionIdentifier) {
if (isset($fieldMap[$fieldDefinitionIdentifier][$languageCode])) {
$fieldDefinition = $contentType->getFieldDefinition($fieldDefinitionIdentifier);
$fieldType = $this->repository->getFieldTypeService()->getFieldType($fieldDefinition->fieldTypeIdentifier);
$fieldTitles[$fieldDefinitionIdentifier] = $fieldType->getName($fieldMap[$fieldDefinitionIdentifier][$languageCode]);
}
}
return $fieldTitles;
}
示例4: buildDomainFields
/**
* Returns an array of domain fields created from given array of SPI fields
*
* @param \eZ\Publish\SPI\Persistence\Content\Field[] $spiFields
* @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
*
* @return array
*/
public function buildDomainFields(array $spiFields, ContentType $contentType)
{
$fieldIdentifierMap = array();
foreach ($contentType->getFieldDefinitions() as $fieldDefinitions) {
$fieldIdentifierMap[$fieldDefinitions->id] = $fieldDefinitions->identifier;
}
/** @var \eZ\Publish\Core\Repository\FieldTypeService $fieldTypeService */
$fieldTypeService = $this->repository->getFieldTypeService();
$fields = array();
foreach ($spiFields as $spiField) {
$fields[] = new Field(array("id" => $spiField->id, "value" => $fieldTypeService->buildFieldType($spiField->type)->fromPersistenceValue($spiField->value), "languageCode" => $spiField->languageCode, "fieldDefIdentifier" => $fieldIdentifierMap[$spiField->fieldDefinitionId]));
}
return $fields;
}
示例5: buildDomainFields
/**
* Returns an array of domain fields created from given array of SPI fields
*
* @param \eZ\Publish\SPI\Persistence\Content\Field[] $spiFields
* @param ContentType|SPIType $contentType
*
* @return array
*/
public function buildDomainFields(array $spiFields, $contentType)
{
$fieldIdentifierMap = array();
if (!$contentType instanceof SPIType && !$contentType instanceof ContentType) {
throw new InvalidArgumentType("\$contentType", "SPI ContentType | API ContentType");
}
foreach ($contentType->fieldDefinitions as $fieldDefinitions) {
$fieldIdentifierMap[$fieldDefinitions->id] = $fieldDefinitions->identifier;
}
$fieldTypeService = $this->repository->getFieldTypeService();
$fields = array();
foreach ($spiFields as $spiField) {
$fields[] = new Field(array("id" => $spiField->id, "value" => $fieldTypeService->buildFieldType($spiField->type)->fromPersistenceValue($spiField->value), "languageCode" => $spiField->languageCode, "fieldDefIdentifier" => $fieldIdentifierMap[$spiField->fieldDefinitionId]));
}
return $fields;
}
示例6: addFieldDefinition
/**
* Adds a new field definition to an existing content type.
*
* The content type must be in state DRAFT.
*
* @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if the identifier in already exists in the content type
* @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to edit a content type
* @throws \eZ\Publish\API\Repository\Exceptions\ContentTypeFieldDefinitionValidationException
* if a field definition in the $contentTypeCreateStruct is not valid
* @throws \eZ\Publish\API\Repository\Exceptions\BadStateException If field definition of the same non-repeatable type is being
* added to the ContentType that already contains one
* or field definition that can't be added to a ContentType that
* has Content instances is being added to such ContentType
*
* @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft
* @param \eZ\Publish\API\Repository\Values\ContentType\FieldDefinitionCreateStruct $fieldDefinitionCreateStruct
*/
public function addFieldDefinition(APIContentTypeDraft $contentTypeDraft, FieldDefinitionCreateStruct $fieldDefinitionCreateStruct)
{
if ($this->repository->hasAccess('class', 'update') !== true) {
throw new UnauthorizedException('ContentType', 'update');
}
$this->validateInputFieldDefinitionCreateStruct($fieldDefinitionCreateStruct);
$loadedContentTypeDraft = $this->loadContentTypeDraft($contentTypeDraft->id);
if ($loadedContentTypeDraft->getFieldDefinition($fieldDefinitionCreateStruct->identifier) !== null) {
throw new InvalidArgumentException("\$fieldDefinitionCreateStruct", "Another FieldDefinition with identifier '{$fieldDefinitionCreateStruct->identifier}' exists in the ContentType");
}
/** @var $fieldType \eZ\Publish\SPI\FieldType\FieldType */
$fieldType = $this->repository->getFieldTypeService()->buildFieldType($fieldDefinitionCreateStruct->fieldTypeIdentifier);
$fieldType->applyDefaultSettings($fieldDefinitionCreateStruct->fieldSettings);
$fieldType->applyDefaultValidatorConfiguration($fieldDefinitionCreateStruct->validatorConfiguration);
$validationErrors = $this->validateFieldDefinitionCreateStruct($fieldDefinitionCreateStruct, $fieldType);
if (!empty($validationErrors)) {
$validationErrors = array($fieldDefinitionCreateStruct->identifier => $validationErrors);
throw new ContentTypeFieldDefinitionValidationException($validationErrors);
}
if ($fieldType->isSingular()) {
foreach ($loadedContentTypeDraft->getFieldDefinitions() as $fieldDefinition) {
if ($fieldDefinition->fieldTypeIdentifier === $fieldDefinitionCreateStruct->fieldTypeIdentifier) {
throw new BadStateException("\$contentTypeDraft", "ContentType already contains field definition of non-repeatable field type '{$fieldDefinition->fieldTypeIdentifier}'");
}
}
}
if ($fieldType->onlyEmptyInstance() && $this->contentTypeHandler->getContentCount($loadedContentTypeDraft->id)) {
throw new BadStateException("\$contentTypeDraft", "Field definition of '{$fieldDefinitionCreateStruct->fieldTypeIdentifier}' field type cannot be added because ContentType has Content instances");
}
$spiFieldDefinitionCreateStruct = $this->buildSPIFieldDefinitionCreate($fieldDefinitionCreateStruct, $fieldType);
$this->repository->beginTransaction();
try {
$this->contentTypeHandler->addFieldDefinition($contentTypeDraft->id, $contentTypeDraft->status, $spiFieldDefinitionCreateStruct);
$this->repository->commit();
} catch (Exception $e) {
$this->repository->rollback();
throw $e;
}
}