J'ai un formulaire personnalisé qui doit afficher une valeur par défaut à partir d'un champ utilisateur personnalisé. Le champ a été créé sous / admin / config / people / accounts / fields et son nom d'ordinateur est field_r_period_length_sec.
//get user
$userCurrent = \Drupal::currentUser();
$uid = $userCurrent->id();
$r_period = $userCurrent->field_r_period_length_sec;
Cependant, la valeur ne s'affiche pas et j'obtiens cette erreur:
Remarque: propriété non définie: Drupal \ Core \ Session \ AccountProxy :: $ field_r_period_length_sec
Qu'est-ce que je fais mal?
$r_period = $user->field_r_period_length_sec->value;
ajoutant ce commentaire/** @var $user \Drupal\user\Entity\User */
ci$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
L'objet utilisateur actuel n'est pas une entité utilisateur. Vous devez charger l'utilisateur avec cet ID pour accéder à n'importe quel champ à l'exception des informations spécifiées par
AccountInterface
.la source
Je ne sais pas depuis quand ces réponses ne fonctionnent plus, mais avec Drupal 8.5 la solution ci-dessus retourne null tout le temps.
Après enquête, la solution pour accéder au champ personnalisé à partir d'un profil utilisateur est:
Ensuite, vous pouvez faire
la source
Entity::load()
est basé sur\Drupal::entityManager();
ce qui est obsolète .Une meilleure façon de procéder consiste à utiliser entityTypeManager ().
la source