Mam niestandardowy formularz, który musi wyświetlać wartość domyślną z niestandardowego pola użytkownika. Pole zostało utworzone w / admin / config / people / account / fields, a jego nazwa komputera to field_r_period_length_sec.
//get user
$userCurrent = \Drupal::currentUser();
$uid = $userCurrent->id();
$r_period = $userCurrent->field_r_period_length_sec;
Jednak wartość nie jest wyświetlana i pojawia się ten błąd:
Uwaga: Niezdefiniowana właściwość: Drupal \ Core \ Session \ AccountProxy :: $ field_r_period_length_sec
Co ja robię źle?
$r_period = $user->field_r_period_length_sec->value;
dodaj ten komentarz/** @var $user \Drupal\user\Entity\User */
powyżej$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
Bieżący obiekt użytkownika nie jest jednostką użytkownika. Musisz załadować użytkownika o tym identyfikatorze, aby uzyskać dostęp do dowolnego pola oprócz informacji określonych przez
AccountInterface
.źródło
Nie wiem, ponieważ kiedy te odpowiedzi już nie działają, ale w Drupal 8.5 powyższe rozwiązanie cały czas zwraca wartość null.
Po zbadaniu rozwiązaniem dostępu do niestandardowego pola z profilu użytkownika jest:
To możesz zrobić
źródło
Entity::load()
jest oparty na\Drupal::entityManager();
których jest przestarzały .Lepszym sposobem na to jest użycie obiektu entityTypeManager ().
źródło