gpt4 book ai didi

drupal - 如何删除从不同模块显示的消息?

转载 作者:行者123 更新时间:2023-12-02 01:05:28 27 4
gpt4 key购买 nike

在 Drupal 7 中,我可以使用以下代码。

if ($_SESSION['messages']['status'][0] == t('Registration successful. You are now logged in.')) {
unset($_SESSION['messages']['status']);
}

Drupal 8 的等效代码是什么?

最佳答案

首先,在 Drupal 8 中,消息与以前一样存储在相同的 $_SESSION['messages'] 变量中。然而,直接使用它并不是一个好方法,因为存在 drupal_set_messagedrupal_get_messages功能,您可以自由使用。

然后,状态消息使用 status-messages 显示主题。这意味着您可以为其编写预处理函数并在那里进行更改:

function mymodule_preprocess_status_messages(&$variables) {
$status_messages = $variables['message_list']['status'];
// Search for your message in $status_messages array and remove it.
}

与 Drupal 7 的主要区别在于,现在状态消息并不总是字符串,它们可能是 Markup 的对象。类(class)。它们是字符串的包装器,可以使用魔术方法 __toString 转换为底层 字符串 。这意味着它们可以与 和 作为字符串进行比较:

function mymodule_preprocess_status_messages(&$variables) {
if(isset($variables['message_list']['status'])){
$status_messages = $variables['message_list']['status'];

foreach($status_messages as $delta => $message) {
if ($message instanceof \Drupal\Component\Render\MarkupInterface) {
if ((string) $message == (string) t("Searched text")) {
unset($status_messages[$delta]);
break;
}
}
}
}
}

关于drupal - 如何删除从不同模块显示的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38788080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com