Drupal 8 - Как включить настраиваемое поле для отображения формы управления программным способом?

Я создал модуль drupal8, который программно создавал пользовательские поля пользователя. Отображается в разделе "Управление полями", но не включается / не отображается в разделе "Управление отображением формы" и "Управление отображением".

Я пытался переопределить entiry_form_display, но не добился успеха.

core.entity_form_display.user.facebook.default.yml

langcode: en
status: true
dependencies:
  config:
    - field.field.user.user.field_facebook
  module:
    - field_layout
    - layout_discovery
    - user
id: user.field_facebook.default
targetEntityType: user
bundle: field_facebook
mode: default
content:
  field_facebook:
    type: string
    weight: 200
    label: above
    settings:
      link_to_entity: false
    third_party_settings: {  }
hidden: {  }

field.field.user.user.field_facebook.yml

langcode: en
status: true
dependencies:
  config:
    - field.storage.user.field_facebook
  module:
    - user
id: user.user.field_facebook
field_name: field_facebook
entity_type: user
bundle: user
label: 'Facebook'
description: ''
required: false
translatable: false
default_value: {  }
default_value_callback: ''
settings: {  }
field_type: string

field.storage.user.field_fullcontact_facebook.yml

langcode: en
status: true
dependencies:
  module:
    - user
id: user.field_facebook
field_name: field_facebook
entity_type: user
type: string
settings: { 
  max_length: 255
  is_ascii: false
  case_sensitive: false
 }
module: core
locked: false
cardinality: 1
translatable: true
indexes: {  }
persist_with_no_fields: false
custom_storage: false

2 ответа

persist_with_no_fields: true

Попробуйте.

Чтобы программно включить настраиваемое поле в форме управления отображением, вам необходимо установитьhiddenсобственностьFALSEдля поля в конфигурации EntityFormDisplay, вот как это сделать.

      $form_display = EntityFormDisplay::load('user.' . 'facebook' . '.default');
if (!$form_display) {
  $form_display = EntityFormDisplay::create([
    'targetEntityType' => 'user',
    'bundle' => 'facebook',
    'mode' => 'default',
    'status' => TRUE,
  ])->setComponent('field_facebook', [
    'region' => 'content',
    'type' => 'string_textfield',
    'weight' => 5,
    'hidden' => FALSE,
  ])
  ->save();
}
Другие вопросы по тегам