$fields['related_content'] = BaseFieldDefinition::create('string_long')
->setLabel(t('Related content'))
->setSetting('text_processing', FALSE)
->setDisplayConfigurable('form', TRUE)
->setTranslatable(FALSE);
&
$fields['related_content'] = BaseFieldDefinition::create('string_long')
->setLabel(t('Related content'))
->setSetting('text_processing', FALSE)
->setDisplayConfigurable('form', TRUE)
->setTranslatable(FALSE);
&
Si vous avez créé un champ personnalisé dans drupal, associé en tant que champs, ou basefield à un type d'entité et que vous souhaitez le changer (ajouter un attribut par exemple cela peut s'avérer assez compliqué, surtout si votre champs à plusieurs instances dans différents types d'entités.
Via le module core « telephone », il est possible de créer un champ de base (basefield) pour les numéros de téléphone. Rien de foufou au niveau de la validation, c'est uniquement au niveau de l'affichage que ce champ permettra d'afficher le numéro sous forme de lien.
Il est possible dans drupal 8 et 9 de surcharger l'auto-completion d'un champ « référence à un type d'entité », à la fois la requête générée (pour par exemple faire la recherche sur d'autres champs que le titre, mais aussi le label des éléments retournés.
Voici comment ajouter un basefield slug à un type d'entité client. La définition de cette propriété se trouvant dans la méthode baseFieldDefinitions de notre type d'entité :
À la différence d'une propriété « lien » (voir :
Je me suis rendu compte que je n'avais jamais documenté comment ajouter une propriété « référence à une entité » :
Pour un type d'entité « client » :
Voici comment définir une propriété (basefield) « e-mail » sur un type d'entité.
Voila comment ajouter une propriétée faisant référence à un média sur un type d'entité :
Voici comment supprimer le basefield « mon_champ_a_suppr » de mon type d'entité personnalisé « mon_type_entite ».
Pour un type d'entité personnalisé, les alias peuvent se gérer à l'aide de motifs via le module pathauto.
Mais à l'instar des nœuds, parfois nous voulons pouvoir avoir la main sur l'alias directement.
Voici comment ajouter un champ texte formaté avec résumé à un type d'entité :
Voici comment créer un champ « fichier » au sein d'un type d'entité custom dans drupal 8 :
Le type nombre décimal peut-être pratique pour stocker tout nombre à virgule (un prix par exemple).
Voici comment attacher une propriété « nombre décimal » à un type d'entité personnalisé.
Pour créer un champ de base de type lien, dans la définition de votre entité :
$fields['date_naissance'] = BaseFieldDefinition::create('datetime')
->setLabel(t('Date de naissance'))
->setRequired(TRUE)
->setDefaultValue(NULL)
->setSetting('datetime_type', 'date')
->setDisplayOptions('form', arra
Drupal vient avec des types d'entité prédéfinis (Node, ou User par exemple). À ces type d'entité il est possible d'ajouter des fields, mais il est aussi possible d'ajouter des propriétés.
Voici comment ajouter des propriétés (prénom et nom) aux utilisateurs.
$fields['photo'] = BaseFieldDefinition::create('image')
->setLabel(t('Photo'))
->setSetting('file_directory', 'formateurs/photos')
->setSetting('file_extensions', 'png jpg jpeg')
->setSetting('min_resolution', '400x400')
Pour faire un champ de base référence à un terme de taxonomie, on va utiliser le type "entity_reference", en lui passant évidement le nom du vocabulaire, (ici "option_types") :
$fields['photos_number'] = BaseFieldDefinition::create('list_integer') ->setLabel(t('Nombre de photos autorisées')) ->setRequired(TRUE) ->setSettings(array( 'allowed_values' => [ 1 => t('1 photo'), 2 => t('2
$fields['description'] = BaseFieldDefinition::create('text_long')
->setLabel(t('Description'))
->setSetting('text_processing', FALSE)
->setDisplayConfigurable('view', TRUE)
->setDisplayConfigurable('form', TRUE);
Pour avoir une zo
$fields['classement'] = BaseFieldDefinition::create('boolean')
->setLabel(t('Classement activé'))
->setDescription(t('Doit-on calculer le classement entre les équipes pour cette competitions'))
//est-ce que l'on autorise les modifications
$fields['subtitle'] = BaseFieldDefinition::create('string')
->setLabel(t('Sous-titre'))
->setDescription(t('Sous-titre de la diapositive'))
->setSetting('max_length', 255)
->setSetting('text_processing', 0)
->setDefaultValue('')
->setD
$fields['target'] = BaseFieldDefinition::create('list_string')
->setLabel(t('Cible de la diapositive'))
->setRequired(TRUE)
->setSetting('allowed_values', [
'individuel' => t('individuel'),
'group' => t('groupe
$fields['score_team_2'] = BaseFieldDefinition::create('integer')
->setLabel('Score Team 2')
->setSetting('unsigned', TRUE) // Nombre « unsigned » donc sans - (uniquement positif)
->setSetting('min', 0) // valeur minimale
->setS
$fields['game_date'] = BaseFieldDefinition::create('datetime')
->setLabel(t('Date'))
->setDescription(t('The game\'s date'))
->setSettings(array(
'default_value' => '',
'max_length' => 50,
'text_processing' => 0,
))
->setDef