diff --git a/src/Cache/ShsTermCacheDependency.php b/src/Cache/ShsTermCacheDependency.php index 2b8c5aa4a39da3f39def4accb74fb28f48eb3a87..a8e6be76b067f51f01ff4d025f4b9d723f736129 100644 --- a/src/Cache/ShsTermCacheDependency.php +++ b/src/Cache/ShsTermCacheDependency.php @@ -66,10 +66,18 @@ class ShsTermCacheDependency implements CacheableDependencyInterface { $list_cache_tags = $entity_type->getListCacheTags(); if ($this->bundle !== NULL) { - $list_cache_tags = Cache::mergeTags( - $list_cache_tags, - $entity_type->getBundleListCacheTags($this->bundle), - ); + // EntityType::getBundleListCacheTags() was added in Drupal core 11.x + // (see https://www.drupal.org/node/3512328) and does not exist on + // Drupal 10.x. Fall back to the documented "ENTITY_TYPE_list:BUNDLE" + // cache tag format there instead of triggering a fatal error. + if (method_exists($entity_type, 'getBundleListCacheTags')) { + $bundle_list_cache_tags = $entity_type->getBundleListCacheTags($this->bundle); + } + else { + $bundle_list_cache_tags = [$entity_type->id() . '_list:' . $this->bundle]; + } + + $list_cache_tags = Cache::mergeTags($list_cache_tags, $bundle_list_cache_tags); } return Cache::mergeTags($this->tags, $list_cache_tags); diff --git a/src/Plugin/Field/FieldWidget/OptionsShsWidget.php b/src/Plugin/Field/FieldWidget/OptionsShsWidget.php index 2cdfda3de204eafb0d51a7a6fb63ed51e89ec262..a2bc28018063bc96e57503964e298e3ea0b3b9b3 100644 --- a/src/Plugin/Field/FieldWidget/OptionsShsWidget.php +++ b/src/Plugin/Field/FieldWidget/OptionsShsWidget.php @@ -180,10 +180,10 @@ class OptionsShsWidget extends OptionsSelectWidget implements ContainerFactoryPl $value = NestedArray::getValue($user_input, $field_parents); $default_value = $value ?: $default_value; } - elseif (isset($user_input[$field_name]) && strpos($user_input[$field_name], ',') !== FALSE) { + elseif (isset($user_input[$field_name]) && is_string($user_input[$field_name]) && strpos($user_input[$field_name], ',') !== FALSE) { $default_value = explode(',', $user_input[$field_name]); } - elseif (isset($user_input[$field_name]) && strpos(trim($user_input[$field_name]), ' ') !== FALSE) { + elseif (isset($user_input[$field_name]) && is_string($user_input[$field_name]) && strpos(trim($user_input[$field_name]), ' ') !== FALSE) { $default_value = explode(' ', $user_input[$field_name]); } elseif (isset($user_input[$field_name])) {