core/lib/Drupal/Core/Render/Element/StatusMessages.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/lib/Drupal/Core/Render/Element/StatusMessages.php b/core/lib/Drupal/Core/Render/Element/StatusMessages.php index f20c47e..376a3b5 100644 --- a/core/lib/Drupal/Core/Render/Element/StatusMessages.php +++ b/core/lib/Drupal/Core/Render/Element/StatusMessages.php @@ -25,6 +25,9 @@ class StatusMessages extends RenderElement { */ public function getInfo() { return [ + // May have a value of 'status' or 'error' when only displaying messages + // of that specific type. + '#display' => NULL, '#pre_render' => [ get_class() . '::generatePlaceholder', ], @@ -63,13 +66,15 @@ public static function generatePlaceholder(array $element) { // hash salt is defined yet. $hash_salt = Crypt::randomBytes(8); } + $key = $plugin_id . $element['#display']; $context = [ - 'token' => Crypt::hmacBase64($plugin_id, $hash_salt), + 'display' => $element['#display'], + 'token' => Crypt::hmacBase64($key, $hash_salt), ]; $placeholder = static::renderer()->generateCachePlaceholder($callback, $context); $element['#post_render_cache'] = [ $callback => [ - $plugin_id => $context, + $key => $context, ], ]; $element['#markup'] = $placeholder; @@ -100,7 +105,7 @@ public static function renderMessages(array $element, array $context) { // Render the messages. $messages = [ '#theme' => 'status_messages', - '#message_list' => drupal_get_messages(), + '#message_list' => drupal_get_messages($context['display']), '#status_headings' => [ 'status' => t('Status message'), 'error' => t('Error message'),