/** * Visits a single content field and generates its content * * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType * @param \eZ\Publish\API\Repository\Values\Content\Field $field */ public function visitField(Generator $generator, ContentType $contentType, Field $field) { $generator->startHashElement('field'); $generator->startValueElement('id', $field->id); $generator->endValueElement('id'); $generator->startValueElement('fieldDefinitionIdentifier', $field->fieldDefIdentifier); $generator->endValueElement('fieldDefinitionIdentifier'); $generator->startValueElement('languageCode', $field->languageCode); $generator->endValueElement('languageCode'); $this->fieldTypeSerializer->serializeFieldValue($generator, $contentType, $field); $generator->endHashElement('field'); }
/** * Visit struct returned by controllers. * * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator * @param \eZ\Publish\API\Repository\Values\ContentType\FieldDefinitionCreateStruct $fieldDefinitionCreateStruct */ public function visit(Visitor $visitor, Generator $generator, $fieldDefinitionCreateStruct) { $generator->startObjectElement('FieldDefinition'); $visitor->setHeader('Content-Type', $generator->getMediaType('FieldDefinitionCreateStruct')); $generator->startValueElement('identifier', $fieldDefinitionCreateStruct->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('fieldType', $fieldDefinitionCreateStruct->fieldTypeIdentifier); $generator->endValueElement('fieldType'); $generator->startValueElement('fieldGroup', $fieldDefinitionCreateStruct->fieldGroup); $generator->endValueElement('fieldGroup'); $generator->startValueElement('position', $fieldDefinitionCreateStruct->position); $generator->endValueElement('position'); $generator->startValueElement('isTranslatable', $fieldDefinitionCreateStruct->isTranslatable ? 'true' : 'false'); $generator->endValueElement('isTranslatable'); $generator->startValueElement('isRequired', $fieldDefinitionCreateStruct->isRequired ? 'true' : 'false'); $generator->endValueElement('isRequired'); $generator->startValueElement('isInfoCollector', $fieldDefinitionCreateStruct->isInfoCollector ? 'true' : 'false'); $generator->endValueElement('isInfoCollector'); $generator->startValueElement('isSearchable', $fieldDefinitionCreateStruct->isSearchable ? 'true' : 'false'); $generator->endValueElement('isSearchable'); $this->fieldTypeSerializer->serializeFieldDefaultValue($generator, $fieldDefinitionCreateStruct->fieldTypeIdentifier, $fieldDefinitionCreateStruct->defaultValue); $this->fieldTypeSerializer->serializeFieldSettings($generator, $fieldDefinitionCreateStruct->fieldTypeIdentifier, $fieldDefinitionCreateStruct->fieldSettings); $this->fieldTypeSerializer->serializeValidatorConfiguration($generator, $fieldDefinitionCreateStruct->fieldTypeIdentifier, $fieldDefinitionCreateStruct->validatorConfiguration); if (!empty($fieldDefinitionCreateStruct->names)) { $generator->startHashElement('names'); $generator->startList('value'); foreach ($fieldDefinitionCreateStruct->names as $languageCode => $name) { $generator->startValueElement('value', $name, array('languageCode' => $languageCode)); $generator->endValueElement('value'); } $generator->endList('value'); $generator->endHashElement('names'); } if (!empty($fieldDefinitionCreateStruct->descriptions)) { $generator->startHashElement('descriptions'); $generator->startList('value'); foreach ($fieldDefinitionCreateStruct->descriptions as $languageCode => $description) { $generator->startValueElement('value', $description, array('languageCode' => $languageCode)); $generator->endValueElement('value'); } $generator->endList('value'); $generator->endHashElement('descriptions'); } $generator->endObjectElement('FieldDefinition'); }
/** * Visit struct returned by controllers. * * @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor * @param \eZ\Publish\Core\REST\Common\Output\Generator $generator * @param \eZ\Publish\Core\REST\Server\Values\RestFieldDefinition $data */ public function visit(Visitor $visitor, Generator $generator, $data) { $restFieldDefinition = $data; $fieldDefinition = $restFieldDefinition->fieldDefinition; $contentType = $restFieldDefinition->contentType; $urlTypeSuffix = $this->getUrlTypeSuffix($contentType->status); $generator->startObjectElement('FieldDefinition'); $visitor->setHeader('Content-Type', $generator->getMediaType('FieldDefinition')); if ($contentType->status === APIContentType::STATUS_DRAFT) { $visitor->setHeader('Accept-Patch', $generator->getMediaType('FieldDefinitionUpdate')); } $generator->startAttribute('href', $this->router->generate("ezpublish_rest_loadContentType{$urlTypeSuffix}FieldDefinition", array('contentTypeId' => $contentType->id, 'fieldDefinitionId' => $fieldDefinition->id))); $generator->endAttribute('href'); $generator->startValueElement('id', $fieldDefinition->id); $generator->endValueElement('id'); $generator->startValueElement('identifier', $fieldDefinition->identifier); $generator->endValueElement('identifier'); $generator->startValueElement('fieldType', $fieldDefinition->fieldTypeIdentifier); $generator->endValueElement('fieldType'); $generator->startValueElement('fieldGroup', $fieldDefinition->fieldGroup); $generator->endValueElement('fieldGroup'); $generator->startValueElement('position', $fieldDefinition->position); $generator->endValueElement('position'); $generator->startValueElement('isTranslatable', $this->serializeBool($generator, $fieldDefinition->isTranslatable)); $generator->endValueElement('isTranslatable'); $generator->startValueElement('isRequired', $this->serializeBool($generator, $fieldDefinition->isRequired)); $generator->endValueElement('isRequired'); $generator->startValueElement('isInfoCollector', $this->serializeBool($generator, $fieldDefinition->isInfoCollector)); $generator->endValueElement('isInfoCollector'); $this->fieldTypeSerializer->serializeFieldDefaultValue($generator, $fieldDefinition->fieldTypeIdentifier, $fieldDefinition->defaultValue); $generator->startValueElement('isSearchable', $this->serializeBool($generator, $fieldDefinition->isSearchable)); $generator->endValueElement('isSearchable'); $this->visitNamesList($generator, $fieldDefinition->getNames()); $descriptions = $fieldDefinition->getDescriptions(); if (is_array($descriptions)) { $this->visitDescriptionsList($generator, $descriptions); } $this->fieldTypeSerializer->serializeFieldSettings($generator, $fieldDefinition->fieldTypeIdentifier, $fieldDefinition->getFieldSettings()); $this->fieldTypeSerializer->serializeValidatorConfiguration($generator, $fieldDefinition->fieldTypeIdentifier, $fieldDefinition->getValidatorConfiguration()); $generator->endObjectElement('FieldDefinition'); }