diff --git a/core/lib/Drupal/Core/Cache/UnchangingCacheableDependencyTrait.php b/core/lib/Drupal/Core/Cache/UnchangingCacheableDependencyTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..437c7cb9dc6c2d10f621c6b667e12c837c1d202f --- /dev/null +++ b/core/lib/Drupal/Core/Cache/UnchangingCacheableDependencyTrait.php @@ -0,0 +1,38 @@ +<?php + +/** + * @file + * Contains \Drupal\Core\Cache\UnchangingCacheableDependencyTrait. + */ + +namespace Drupal\Core\Cache; + +/** + * Trait to implement CacheableDependencyInterface for unchanging objects. + * + * @see \Drupal\Core\Cache\CacheableDependencyInterface + */ +trait UnchangingCacheableDependencyTrait { + + /** + * {@inheritdoc} + */ + public function getCacheContexts() { + return []; + } + + /** + * {@inheritdoc} + */ + public function getCacheTags() { + return []; + } + + /** + * {@inheritdoc} + */ + public function getCacheMaxAge() { + return Cache::PERMANENT; + } + +} diff --git a/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php b/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php index ff46e3e302cd77b5fb7c2590c380d831beabd591..dfe912e545c5f7c63945d9e883976a8be5328e5f 100644 --- a/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php +++ b/core/lib/Drupal/Core/Entity/Entity/EntityFormDisplay.php @@ -7,7 +7,6 @@ namespace Drupal\Core\Entity\Entity; -use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Entity\EntityDisplayPluginCollection; use Drupal\Core\Entity\FieldableEntityInterface; use Drupal\Core\Entity\Display\EntityFormDisplayInterface; @@ -178,13 +177,8 @@ public function buildForm(FieldableEntityInterface $entity, array &$form, FormSt // Associate the cache tags for the field definition & field storage // definition. $field_definition = $this->getFieldDefinition($name); - if ($field_definition instanceof CacheableDependencyInterface) { - $this->renderer->addDependency($form[$name], $field_definition); - } - $field_storage_definition = $field_definition->getFieldStorageDefinition(); - if ($field_storage_definition instanceof CacheableDependencyInterface) { - $this->renderer->addDependency($form[$name], $field_storage_definition); - } + $this->renderer->addDependency($form[$name], $field_definition); + $this->renderer->addDependency($form[$name], $field_definition->getFieldStorageDefinition()); } } diff --git a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php index 244f25b670e35fb7197341368251d78f57c6f676..3d72b6ffa745a9bf10d774f64b5ba06294071de4 100644 --- a/core/lib/Drupal/Core/Field/BaseFieldDefinition.php +++ b/core/lib/Drupal/Core/Field/BaseFieldDefinition.php @@ -7,6 +7,7 @@ namespace Drupal\Core\Field; +use Drupal\Core\Cache\UnchangingCacheableDependencyTrait; use Drupal\Core\Entity\FieldableEntityInterface; use Drupal\Core\Field\Entity\BaseFieldOverride; use Drupal\Core\Field\TypedData\FieldItemDataDefinition; @@ -18,6 +19,8 @@ */ class BaseFieldDefinition extends ListDataDefinition implements FieldDefinitionInterface, FieldStorageDefinitionInterface { + use UnchangingCacheableDependencyTrait; + /** * The field type. * diff --git a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php index 1698b7739570db25f49c8d33d82c5098fbb67fe3..e4f47b22518b31595efa3ee331fac6ed0eeb6317 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php +++ b/core/lib/Drupal/Core/Field/FieldDefinitionInterface.php @@ -7,6 +7,7 @@ namespace Drupal\Core\Field; +use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Entity\FieldableEntityInterface; use Drupal\Core\TypedData\ListDataDefinitionInterface; @@ -52,7 +53,7 @@ * based on that abstract definition, even though that abstract definition can * differ from the concrete definition of any particular node's body field. */ -interface FieldDefinitionInterface extends ListDataDefinitionInterface { +interface FieldDefinitionInterface extends ListDataDefinitionInterface, CacheableDependencyInterface { /** * Returns the machine name of the field. diff --git a/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php b/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php index 396e70dbc6bf20e65a4cce4718f7e2ea11d66b47..3d15bca53ac3ffb6957c2e872c7c233939289280 100644 --- a/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php +++ b/core/lib/Drupal/Core/Field/FieldStorageDefinitionInterface.php @@ -7,6 +7,7 @@ namespace Drupal\Core\Field; +use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Entity\FieldableEntityInterface; /** @@ -27,7 +28,7 @@ * * @see hook_entity_field_storage_info() */ -interface FieldStorageDefinitionInterface { +interface FieldStorageDefinitionInterface extends CacheableDependencyInterface { /** * Value indicating a field accepts an unlimited number of values.