Drupal 8 - Surcharger la classe de l'entité User

Posté le Mardi 21 janvier 2020 - 07:14

Sous Drupal 8 il est possible de surcharger la classe du type d'entité « User » afin de par exemple ajouter nos propres getters et setters ou de modifier l'affichage par défaut d'un nom d'utilisateur.

Pour cela il faut informer drupal qu'on va changer la classe de base pour le type d'entité User. Cela se passe dans le .module via le hook HOOK_entity_type_alter :

  1. function monmodule_entity_type_alter(array &$entity_types) {
  2. $entity_types['user']->setClass(\Drupal\monmodule\Entity\User::class);
  3. }

Et il faut ensuite définir la classe en elle même :

  1. # web/modules/custom/monmodule/src/Entity/User.php
  2. <?php
  3.  
  4. namespace Drupal\monmodule\Entity;
  5.  
  6. use Drupal\domain\Entity\Domain;
  7. use Drupal\user\Entity\User as UserBase;
  8.  
  9. class User extends UserBase {
  10.  
  11. public function label() {
  12. return $this->lastname->value . ' ' . $this->firstname->value;
  13. }
  14.  
  15. public function setDomain($domain_id) {
  16. $this->set('field_domain_access', [$domain_id]);
  17. return $this;
  18. }
  19.  
  20. }

Rien de foufou ici, j'ai surchargé la méthode « label », ainsi par exemple dans la listes des membres du site sera affiché en lieu et place de leur nom d'utilisateur, leurs nom et prénom. Il y a aussi un setter pour définir le domain de l'utilisateur.

Maintenant d'est que l'on chargera un utilisateur il sera de cette classe, et non plus de la classe de base.

Ceci est évidement possible pour l'ensemble des types d'entités (Noeuds, terme de taxonomy...)

 

Commentaires

best essay wri…

Posté le Samedi 21 mars 2020 - 06:01

We value excellent academic writing and strive to provide outstanding essay writing services each and every time you place an order. We write essays, research papers, term papers, course works, reviews, theses and more, so our primary mission is to help you succeed academically.
https://buyessays.us/services.php - don't waste your time and order our essay writing service today!

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...