在Drupal 7中
if ($_SESSION['messages']['status'][0] == t('Registration successful. You are now logged in.')) {
unset($_SESSION['messages']['status']);
}
Run Code Online (Sandbox Code Playgroud)
我如何在drupal 8中实现这一点?请帮忙
Sta*_*pov 11
首先,在Drupal 8中,消息存储在与$_SESSION['messages']之前相同的变量中.但是,直接使用它并不是一种好方法,因为存在drupal_set_message和drupal_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.
}
Run Code Online (Sandbox Code Playgroud)
然而,与Drupal 7的主要区别在于,现在状态消息并不总是字符串,它们可能是Markup类的对象.它们是字符串的包装器,可以使用魔术方法转换为底层 .这意味着它们可以与字符串进行比较:string__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;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)