【问题标题】:How can I add a paragraph (as default) in the node form by using hook_form_alter in Drupal 8?如何在 Drupal 8 中使用 hook_form_alter 在节点表单中添加段落(默认)?
【发布时间】:2020-02-27 14:45:11
【问题描述】:

每次创建某种内容类型的节点时,我都会尝试将一堆不同类型的不同空段落添加到实体引用修订字段中。 我不想为此使用contrib模块的“默认段落”,因为我这里需要使用某个表单小部件,而默认段落也是通过一个小部件来实现的。

到目前为止我尝试了什么:

function myModule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id){

    $paragraph = \Drupal\paragraphs\Entity\Paragraph::create([
        'type' => 'tab_features'
      ]);
      $paragraph->save();

      $form['field_tabs']['widget'][0]['target_id']=$paragraph->id();
      $form['field_tabs']['widget'][0]['target_revision_id']=$paragraph->getRevisionId();

      return $form;
    }

$field_tabs 是我的实体参考修订字段。 'tab_features' 是我要添加的段落类型。

我想应该有一种方法可以在表单或表单小部件中用于向表单添加段落,就像有人已经单击按钮添加它一样。如果可能,我想避免通过 Javascript 实际触发它。任何人都知道如何在 form_alter 中做到这一点?

【问题讨论】:

    标签: drupal drupal-8 paragraph


    【解决方案1】:

    在我正在进行的一个项目中,我们做了这样的事情:

        //get the body field
        $field = $entity->get('field_em_p_body');
        $paragraph = Paragraph::create([
            'type' => 'em_section', // Paragraph type.
          ]);
          $paragraph->isNew();
          $paragraph->set('YOUR_FIELD', 'SOMETHING');
          $field->appendItem($paragraph);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      相关资源
      最近更新 更多