Drupal 8 信使服务

长期以来,该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 的未来版本中删除。