web-dev-qa-db-fra.com

Définition de champ datetime d'entité personnalisée

J'ai créé une entité dans un module, en utilisant du code. J'ai généré des squelettes avec drupal console generate:entity:content (Sans bundles), puis ajouté un champ datetime à mon TestFieldEntityItem.php, dans baseFieldDefinitions().

$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);

Je peux ajouter des données à mon entité, sans problème, mais si je veux ajouter un autre champ (un simple champ de texte) via l'interface utilisateur, j'obtiens cette erreur:

Un problème est survenu à la création du champ test_text: Le plugin "datetime" n'existe pas.

(En anglais, le message d'erreur est n problème est survenu lors de la création du champ test_text: le plugin "datetime" n'existe pas.)

Le champ est créé, mais je n'aime pas cette erreur. Il semble que mon code pour créer le champ datetime n'est pas le bon. J'utilise le module Calendrier, si cela peut avoir une incidence.

3
Grubshka

Difficile de dire quel plugin est manquant. Une supposition serait qu'il s'agit d'un plugin de widget de champ manquant qui provoque l'erreur lorsque vous essayez d'ajouter un nouveau champ au mode de formulaire par défaut. Ensuite, changez le nom du plugin en quelque chose comme ceci:

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

Si ce n'est pas l'erreur, fournissez un message d'erreur complet avec une trace.

3
4k4