public function ContentEntityNormalizer::normalize in Zircon Profile 8
Same name in this branch
- 8 core/modules/hal/src/Normalizer/ContentEntityNormalizer.php \Drupal\hal\Normalizer\ContentEntityNormalizer::normalize()
- 8 core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php \Drupal\serialization\Normalizer\ContentEntityNormalizer::normalize()
Same name and namespace in other branches
- 8.0 core/modules/hal/src/Normalizer/ContentEntityNormalizer.php \Drupal\hal\Normalizer\ContentEntityNormalizer::normalize()
Normalizes an object into a set of arrays/scalars.
Parameters
object $object object to normalize:
string $format format the normalization result will be encoded as:
array $context Context options for the normalizer:
Return value
array|string|bool|int|float|null
Overrides NormalizerInterface::normalize
1 call to ContentEntityNormalizer::normalize()
- FileEntityNormalizer::normalize in core/
modules/ hal/ src/ Normalizer/ FileEntityNormalizer.php - Normalizes an object into a set of arrays/scalars.
1 method overrides ContentEntityNormalizer::normalize()
- FileEntityNormalizer::normalize in core/
modules/ hal/ src/ Normalizer/ FileEntityNormalizer.php - Normalizes an object into a set of arrays/scalars.
File
- core/
modules/ hal/ src/ Normalizer/ ContentEntityNormalizer.php, line 66 - Contains \Drupal\hal\Normalizer\ContentEntityNormalizer.
Class
- ContentEntityNormalizer
- Converts the Drupal entity object structure to a HAL array structure.
Namespace
Drupal\hal\NormalizerCode
public function normalize($entity, $format = NULL, array $context = array()) {
$context += array(
'account' => NULL,
'included_fields' => NULL,
);
// Create the array of normalized fields, starting with the URI.
/** @var $entity \Drupal\Core\Entity\ContentEntityInterface */
$normalized = array(
'_links' => array(
'self' => array(
'href' => $this
->getEntityUri($entity),
),
'type' => array(
'href' => $this->linkManager
->getTypeUri($entity
->getEntityTypeId(), $entity
->bundle(), $context),
),
),
);
// If the fields to use were specified, only output those field values.
// Otherwise, output all field values except internal ID.
if (isset($context['included_fields'])) {
$fields = array();
foreach ($context['included_fields'] as $field_name) {
$fields[] = $entity
->get($field_name);
}
}
else {
$fields = $entity
->getFields();
}
// Ignore the entity ID and revision ID.
$exclude = array(
$entity
->getEntityType()
->getKey('id'),
$entity
->getEntityType()
->getKey('revision'),
);
foreach ($fields as $field) {
// Continue if this is an excluded field or the current user does not have
// access to view it.
if (in_array($field
->getFieldDefinition()
->getName(), $exclude) || !$field
->access('view', $context['account'])) {
continue;
}
$normalized_property = $this->serializer
->normalize($field, $format, $context);
$normalized = NestedArray::mergeDeep($normalized, $normalized_property);
}
return $normalized;
}