コードを使用して、モジュール内にエンティティを作成しました。 _drupal console generate:entity:content
_(バンドルなし)でスケルトンを生成し、次にbaseFieldDefinitions()
の日時フィールドをTestFieldEntityItem.phpに追加しました。
_$fields['test_date_incode'] = BaseFieldDefinition::create('datetime')
->setLabel(t('Test date'))
->setDescription(t('Test.'))
->setRevisionable(TRUE)
->setSettings([
'datetime_type' => 'date'
])
->setDefaultValue('')
->setDisplayOptions('view', [
'label' => 'above',
'type' => 'datetime_default',
'settings' => [
'format_type' => 'medium',
],
'weight' => 14,
])
->setDisplayOptions('form', [
'type' => 'datetime',
'weight' => 14,
])
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
_
問題なくエンティティにデータを追加できますが、UIから別のフィールド(単純なテキストフィールド)を追加したい場合、次のエラーが発生します。
Unproblèmeest survenuàlacréationdu champ test_text:「datetime」プラグインが存在しません。
(英語では、エラーメッセージはフィールドtest_textの作成中に問題が発生しました: "datetime"プラグインは存在しません。)
フィールドが作成されましたが、このエラーは好きではありません。日時フィールドを作成するための私のコードは正しいものではないようです。これが発生する可能性がある場合は、カレンダーモジュールを使用します。
どのプラグインが欠落しているかはわかりません。おそらく、デフォルトのフォームモードに新しいフィールドを追加しようとすると、エラーが発生するフィールドウィジェットプラグインが欠落していると考えられます。次に、プラグイン名を次のように変更します。
->setDisplayOptions('form', [
'type' => 'datetime_default',
これがエラーでない場合は、完全なエラーメッセージとバックトレースを提供します。