DataFormatter
abstract class DataFormatter (View source)
A DataFormatter object handles transformation of data from SilverStripe model objects to a particular output format, and vice versa. This is most commonly used in developing RESTful APIs.
Traits
Provides extensions to this object to integrate it with standard config API methods.
Config options
priority | int | Set priority from 0-100. |
Properties
public | int | $relationDepth | Follow relations for the DataObject instances ($has_one, $has_many, $many_many). |
|
protected | array | $customFields | Allows overriding of the fields which are rendered for the processed dataobjects. By default, this includes all fields in DataObject::inheritedDatabaseFields(). |
|
protected | array | $customAddFields | Allows addition of fields (e.g. custom getters on a DataObject) |
|
protected | array | $customRelations | Allows to limit or add relations. |
|
protected | array | $removeFields | Fields which should be expicitly excluded from the export. |
|
protected | string | $outputContentType | Specifies the mimetype in which all strings returned from the convert*() methods should be used, e.g. "text/xml". |
|
protected | int | $totalSize | Used to set totalSize properties on the output of convertDataObjectSet(), shows the total number of records without the "limit" and "offset" GET parameters. Useful to implement pagination. |
Methods
Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).
Gets the uninherited value for the given config option
Backslashes in fully qualified class names (e.g. NameSpaced\ClassName) kills both requests (i.e. URIs) and XML (invalid character in a tag name) So we'll replace them with a hyphen (-), as it's also unambiguious in both cases (invalid in a php class name, and safe in an xml tag name)
Get a DataFormatter object suitable for handling the given file extension.
Get formatter for the first matching extension.
Get a DataFormatter object suitable for handling the given mimetype.
Get formatter for the first matching mimetype.
Returns all fields on the object which should be shown in the output. Can be customised through DataFormatter::setCustomFields().
Convert a single data object to this format. Return a string.
Convert an array of aliased field names to their Dataobject field name
Get the DataObject field name from its alias
Get a DataObject Field's Alias defaults to the fieldname
Get the 'api_field_mapping' config value for a class or return an empty array
Details
static Config_ForClass
config()
Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).
mixed
uninherited(string $name)
Gets the uninherited value for the given config option
protected string
sanitiseClassName($className)
Backslashes in fully qualified class names (e.g. NameSpaced\ClassName) kills both requests (i.e. URIs) and XML (invalid character in a tag name) So we'll replace them with a hyphen (-), as it's also unambiguious in both cases (invalid in a php class name, and safe in an xml tag name)
static DataFormatter
for_extension(string $extension)
Get a DataFormatter object suitable for handling the given file extension.
static DataFormatter
for_extensions(array $extensions)
Get formatter for the first matching extension.
static DataFormatter
for_mimetype(string $mimeType)
Get a DataFormatter object suitable for handling the given mimetype.
static DataFormatter
for_mimetypes(array $mimetypes)
Get formatter for the first matching mimetype.
Useful for HTTP Accept headers which can contain multiple comma-separated mimetypes.
$this
setCustomFields(array $fields)
No description
array
getCustomFields()
No description
$this
setCustomAddFields(array $fields)
No description
$this
setCustomRelations(array $relations)
No description
array
getCustomRelations()
No description
array
getCustomAddFields()
No description
$this
setRemoveFields(array $fields)
No description
array
getRemoveFields()
No description
string
getOutputContentType()
No description
$this
setTotalSize(int $size)
No description
int
getTotalSize()
No description
protected array
getFieldsForObj(DataObject $obj)
Returns all fields on the object which should be shown in the output. Can be customised through DataFormatter::setCustomFields().
abstract
supportedExtensions()
Return an array of the extensions that this data formatter supports
abstract
supportedMimeTypes()
No description
abstract mixed
convertDataObject(DataObjectInterface $do)
Convert a single data object to this format. Return a string.
abstract string
convertDataObjectSet(SS_List $set)
Convert a data object set to this format. Return a string.
abstract string
convertArray($array)
Convert an array to this format. Return a string.
convertStringToArray(string $strData)
No description
string[]
getRealFields(string $className, string[] $fields)
Convert an array of aliased field names to their Dataobject field name
string
getRealFieldName(string $className, string $field)
Get the DataObject field name from its alias
string
getFieldAlias(string $className, string $field)
Get a DataObject Field's Alias defaults to the fieldname
protected string[]|array
getApiMapping(string $className)
Get the 'api_field_mapping' config value for a class or return an empty array
protected string
getMappedKey(array $map, string $key)
Helper function to get mapped field names