3 namespace Drupal\Driver\Fields\Drupal8;
5 use Drupal\Driver\Fields\FieldHandlerInterface;
8 * Base class for field handlers in Drupal 8.
10 abstract class AbstractHandler implements FieldHandlerInterface {
12 * Field storage definition.
14 * @var \Drupal\field\Entity\FieldStorageConfig
16 protected $fieldInfo = NULL;
19 * Field configuration definition.
21 * @var \Drupal\field\Entity\FieldConfig
23 protected $fieldConfig = NULL;
26 * Constructs an AbstractHandler object.
28 * @param \stdClass $entity
29 * The simulated entity object containing field information.
30 * @param string $entity_type
32 * @param string $field_name
36 * Thrown when the given field name does not exist on the entity.
38 public function __construct(\stdClass $entity, $entity_type, $field_name) {
39 $entity_manager = \Drupal::entityManager();
40 $fields = $entity_manager->getFieldStorageDefinitions($entity_type);
41 $this->fieldInfo = $fields[$field_name];
43 $bundle_key = $entity_manager->getDefinition($entity_type)->getKey('bundle');
44 $bundle = !empty($entity->$bundle_key) ? $entity->$bundle_key : $entity_type;
46 $fields = $entity_manager->getFieldDefinitions($entity_type, $bundle);
47 if (empty($fields[$field_name])) {
48 throw new \Exception(sprintf('The field "%s" does not exist on entity type "%s".', $field_name, $entity_type));
50 $this->fieldConfig = $fields[$field_name];