web-dev-qa-db-ja.com

更新フックに基本フィールド定義を追加する-表示されない

Drupalエンティティに別のベースフィールドを追加したい。エンティティ定義のコードを変更し、Drupal =コンソールですが、今は更新フックで実行する必要があります。

次の更新フックを追加しました。完了drush updbとプロセスはエラーなしで完了します。その後、drush crキャッシュをクリアし、問題のエンティティの編集フォームを開いて、ハードリフレッシュしました。しかし、新しい分野は現れていません。私が間違っていることは何か考えていますか?ありがとう。コードはこれに基づいています: https://www.drupal.org/node/3034742 、「新しいフィールドストレージ定義のインストール」というセクション。

function opencase_entities_update_8002() {
  $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('datetime')
      ->setLabel(t('Date and time'))
      ->setDescription(t('When the activity started.'))
      ->setRevisionable(TRUE)
      ->setSettings([
        'datetime_type' => 'date'
      ])
      ->setDefaultValue('2000-01-01')
      ->setDisplayOptions('view', [
        'label' => 'above',
        'weight' => -3,
      ])
      ->setDisplayOptions('form', [
        'weight' => -3,
      ]);

  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('activity_date_time', 'oc_activity', 'oc_activity', $storage_definition);
}
1
naomi

問題は、表示オプションの構成にあります(参照 #244122に対する4k4の回答 )。

これを試して:

function opencase_entities_update_8002() {
  $storage_definition =  \Drupal\Core\Field\BaseFieldDefinition::create('datetime')
      ->setLabel(t('Date and time'))
      ->setDescription(t('When the activity started.'))
      ->setRevisionable(TRUE)
      ->setSettings([
        'datetime_type' => 'date'
      ])
      ->setDefaultValue('2000-01-01')
      ->setDisplayOptions('view', [
        'label' => 'above',
        'type' => 'datetime_default',
        'settings' => [
          'format_type' => 'medium',
        ],
        'weight' => -3,
      ])
      ->setDisplayOptions('form', [
        'type' => 'datetime_default',
        'weight' => -3,
      ]);

  \Drupal::entityDefinitionUpdateManager()
    ->installFieldStorageDefinition('activity_date_time', 'oc_activity', 'oc_activity', $storage_definition);
}

編集:エンティティ定義も更新することを忘れないでください!

1
Isaiah Nixon