长期以来,该drupal_set_message()功能一直是 Drupal 开发的中流砥柱。您可以使用此函数向用户打印消息或错误响应。这很有用,因为它几乎可以在最终页面渲染功能之前的任何地方完成,并且会被打印到 Drupal 页面的同一区域。
这最近在 Drupal 8.5.0 中被弃用了,所以我一直在寻找如何以一种新的方式做同样的事情。Drupal 现在有一个信使服务,由类 Drupal\Core\Messenger\Messenger 提供支持。这可以使用以下快捷方式包含在您的代码中。
$messenger = \Drupal::messenger();
这可用于向用户打印消息。例如,要打印具有蓝色背景的标准消息,请执行以下操作。
$messenger->addMessage('Message printed to a user.');
这可以像这样在一行中完成。
\Drupal::messenger()->addMessage('Message printed to a user.');
有四种不同类型的消息可用,每一种都与其他相同类型的消息一起打印在不同的颜色背景上。
// 绿色状态消息。 $messenger->addStatus('Print a status to the user.'); // 蓝色消息。 $messenger->addMessage('Message printed to a user.'); // 黄色警告信息。 $messenger->addWarning('A warning about something!'); // 红色错误信息。 $messenger->addError('An error happened!');
如果您在 Drupal 8 表单的submitForm()处理程序中,那么您还可以通过表单对象访问信使服务。
$this->messenger()->addMessage($this->t('Form message.'));
如果您仍在使用,drupal_set_message()那么我建议您尽快切换到 messenger 服务,因为它将在 Drupal 的未来版本中删除。