我正在创建一个消息系统,您可以在其中与其他用户一起编写。我的问题是给多个用户写一条消息。我创建了一个自定义字段来存储消息的接收者,并创建一个字段来存储用户是否阅读了消息。但是如何通过delta将多个值存储到我的自定义字段? (或者有没有办法将uid存储为delta?对我来说会更容易。)
现在是:
应该是这样的:
这是我创建消息(节点)的代码:
public function submitForm( array &$form, FormStateInterface $form_state ) {
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();
// The messagetext.
$message = $form_state->getValue('message');
// Use WYSIWYG or not
$format = ( is_array( $message ) ? $message['format'] : 'basic_html' );
$message = ( is_array( $message ) ? $message['value'] : '<p>' . $message . '</p>');
// read = 0 -> unread
// read = 1 -> read
$read = 0
$newMessage = Node::create([
'type' => 'msg_message',
'bundle' => 'msg_message',
'langcode' => $language,
'uid' => (int)$form['senderId'],
'title' => $form_state->getValue('subject'),
'status' => 1,
'promote' => false,
'created' => $form['timestamp'],
'changed' => $form['timestamp'],
'body' => [
'summary' => '',
'value' => $message,
'format' => $format,
],
'field_msg_receiver' => [
'value' => json_encode($form_state->getValue('receiverId')),
],
'field_msg_read' => [
'value' => $read
],
]);
$newMessage->save();
$form_state->setRedirect('message_system.message_overview.all');
}
答案 0 :(得分:0)
请参阅How to set value for multivalue field in drupal 8 programmatically。
我尝试将此标记为重复,但只有在同一网站上才允许这样做。另一个问题是Drupal Answers,而不是Stack Overflow。