web-dev-qa-db-ja.com

カスタムエンティティの日時フィールドの定義

コードを使用して、モジュール内にエンティティを作成しました。 _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"プラグインは存在しません。

フィールドが作成されましたが、このエラーは好きではありません。日時フィールドを作成するための私のコードは正しいものではないようです。これが発生する可能性がある場合は、カレンダーモジュールを使用します。

3
Grubshka

どのプラグインが欠落しているかはわかりません。おそらく、デフォルトのフォームモードに新しいフィールドを追加しようとすると、エラーが発生するフィールドウィジェットプラグインが欠落していると考えられます。次に、プラグイン名を次のように変更します。

  ->setDisplayOptions('form', [
    'type' => 'datetime_default',

これがエラーでない場合は、完全なエラーメッセージとバックトレースを提供します。

3
4k4