eZ\Publish\Core\REST\Server\Output\ValueObjectVisitor\RestFieldDefinition::visit PHP Method

visit() public method

Visit struct returned by controllers.
public visit ( Visitor $visitor, Generator $generator, RestFieldDefinition $data )
$visitor eZ\Publish\Core\REST\Common\Output\Visitor
$generator eZ\Publish\Core\REST\Common\Output\Generator
$data eZ\Publish\Core\REST\Server\Values\RestFieldDefinition
    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');
    }

Usage Example

 /**
  * 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\CreatedFieldDefinition $data
  */
 public function visit(Visitor $visitor, Generator $generator, $data)
 {
     $restFieldDefinition = $data->fieldDefinition;
     parent::visit($visitor, $generator, $restFieldDefinition);
     $draftUriPart = $this->getUrlTypeSuffix($restFieldDefinition->contentType->status);
     $visitor->setHeader('Location', $this->router->generate("ezpublish_rest_loadContentType{$draftUriPart}FieldDefinition", array('contentTypeId' => $restFieldDefinition->contentType->id, 'fieldDefinitionId' => $restFieldDefinition->fieldDefinition->id)));
     $visitor->setStatus(201);
 }
RestFieldDefinition