content_entity_base-8.x-1.x-dev/src/Entity/EntityTypeBase.php
src/Entity/EntityTypeBase.php
<?php
namespace Drupal\content_entity_base\Entity;
use Drupal\Core\Config\Entity\ConfigEntityBundleBase;
use Drupal\Core\Entity\EntityStorageInterface;
/**
* Defines the entity type configuration entity.
*/
class EntityTypeBase extends ConfigEntityBundleBase implements EntityTypeBaseInterface {
/**
* The custom entity type ID.
*
* @var string
*/
protected $id;
/**
* The custom entity type label.
*
* @var string
*/
protected $label;
/**
* The name label.
*
* @var string
*/
protected $name_label;
/**
* The default revision setting for custom entities of this type.
*
* @var bool
*/
protected $revision;
/**
* The description of the entity type.
*
* @var string
*/
protected $description;
/**
* {@inheritdoc}
*/
public function bundleOf() {
return $this->getEntityType()->getBundleOf();
}
/**
* {@inheritdoc}
*/
public function getDescription() {
return $this->description;
}
/**
* {@inheritdoc}
*/
public function shouldCreateNewRevision() {
return $this->revision;
}
/**
* {@inheritdoc}
*/
public function postSave(EntityStorageInterface $storage, $update = TRUE) {
parent::postSave($storage, $update);
// Update the label for the name field if the name_label has been set.
if ($name_label = $this->get('name_label')) {
// Get overridden field settings for this bundle.
$fields = $this->entityManager()->getFieldDefinitions($this->getEntityType()->getBundleOf(), $this->id());
$name_field = $fields['name'];
// Set the name label if it has been updated.
if ($name_field->getLabel() != $name_label) {
$name_field->getConfig($this->id())->setLabel($name_label)->save();
}
}
}
}
