Pull merge.
[yaffs-website] / web / core / lib / Drupal / Core / Render / Element / StatusMessages.php
index d16c245a1d819228100b5e36367af73d69fad126..d8627343eea01bb766de507d518bd0c139492fa7 100644 (file)
@@ -5,7 +5,7 @@ namespace Drupal\Core\Render\Element;
 /**
  * Provides a messages element.
  *
- * Used to display results of drupal_set_message() calls.
+ * Used to display results of \Drupal::messenger()->addMessage() calls.
  *
  * Usage example:
  * @code
@@ -61,7 +61,8 @@ class StatusMessages extends RenderElement {
    *
    * @param string|null $type
    *   Limit the messages returned by type. Defaults to NULL, meaning all types.
-   *   Passed on to drupal_get_messages(). These values are supported:
+   *   Passed on to \Drupal\Core\Messenger\Messenger::deleteByType(). These
+   *   values are supported:
    *   - NULL
    *   - 'status'
    *   - 'warning'
@@ -70,20 +71,32 @@ class StatusMessages extends RenderElement {
    * @return array
    *   A renderable array containing the messages.
    *
-   * @see drupal_get_messages()
+   * @see \Drupal\Core\Messenger\Messenger::deleteByType()
    */
-  public static function renderMessages($type) {
-    // Render the messages.
-    return [
-      '#theme' => 'status_messages',
-      // @todo Improve when https://www.drupal.org/node/2278383 lands.
-      '#message_list' => drupal_get_messages($type),
-      '#status_headings' => [
-        'status' => t('Status message'),
-        'error' => t('Error message'),
-        'warning' => t('Warning message'),
-      ],
-    ];
+  public static function renderMessages($type = NULL) {
+    $render = [];
+    if (isset($type)) {
+      $messages = [
+        $type => \Drupal::messenger()->deleteByType($type),
+      ];
+    }
+    else {
+      $messages = \Drupal::messenger()->deleteAll();
+    }
+
+    if ($messages) {
+      // Render the messages.
+      $render = [
+        '#theme' => 'status_messages',
+        '#message_list' => $messages,
+        '#status_headings' => [
+          'status' => t('Status message'),
+          'error' => t('Error message'),
+          'warning' => t('Warning message'),
+        ],
+      ];
+    }
+    return $render;
   }
 
 }