Drupal 8以编程方式创建字段

时间:2015-12-13 14:29:30

标签: drupal drupal-8 drupal-fields drupal-field-api

我为Drupal 8创建了一个自定义模块,允许用户选择内容类型,以便以编程方式添加一些字段。 我如何创建一些字段(在这种情况下为文本类型)并将它们附加到具有自定义模块的内容类型?

一些帮助?

感谢。

2 个答案:

答案 0 :(得分:2)

为Drupal 8结帐Field API

它实现了几个函数,hook_entity_bundle_field_info可能是你需要的,这里是一个来自该钩子的文档的文本字段的例子

function hook_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
  // Add a property only to nodes of the 'article' bundle.
  if ($entity_type->id() == 'node' && $bundle == 'article') {
    $fields = array();
    $fields['mymodule_text_more'] = BaseFieldDefinition::create('string')
      ->setLabel(t('More text'))
      ->setComputed(TRUE)
      ->setClass('\Drupal\mymodule\EntityComputedMoreText');
    return $fields;
  }
}

您可能还需要字段存储,结帐hook_entity_field_storage_info

答案 1 :(得分:1)

你需要创建FieldType,FieldWidget和FieldFormatter(如果需要),Core / Field / Plugin / Field中有很好的例子。

这里有一个很好的例子https://www.drupal.org/node/2620964