drupal 8 如何创建具有多个值的节点

drupal 8 how to create nodes with multiple values

我正在创建一个消息系统,您可以在其中与其他用户一起写信。我的问题是向多个用户写一条消息。我创建了一个自定义字段来存储消息的接收者和一个用于存储用户是否阅读消息的字段。但是如何通过增量将多个值存储到我的自定义字段? (或者有没有办法将 uid 存储为增量?对我来说会更容易。)

现在是:

应该是这样的:

.

这是我创建消息(节点)的代码:

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');
}

参见How to set value for multivalue field in drupal 8 programmatically

我尝试将其标记为重复,但只有在同一站点上才允许这样做。另一个问题是关于 Drupal Answers,而不是 Stack Overflow。