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);
}
問題は、表示オプションの構成にあります(参照 #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);
}
編集:エンティティ定義も更新することを忘れないでください!