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

时间:2016-05-18 13:19:15

标签: nodes drupal-8

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

现在是:

(now)

应该是这样的:

(future)

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

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

1 个答案:

答案 0 :(得分:0)

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

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