Saya memiliki formulir khusus yang perlu menampilkan nilai default dari bidang pengguna kustom. Bidang ini dibuat di bawah / admin / config / people / accounts / bidang dan nama mesinnya adalah field_r_ Period_length_sec.
//get user
$userCurrent = \Drupal::currentUser();
$uid = $userCurrent->id();
$r_period = $userCurrent->field_r_period_length_sec;
Namun, nilainya tidak muncul dan saya mendapatkan kesalahan ini:
Pemberitahuan: Properti tidak terdefinisi: Drupal \ Core \ Session \ AccountProxy :: $ field_r_ Period_length_sec
Apa yang saya lakukan salah?
$r_period = $user->field_r_period_length_sec->value;
tambahkan komentar ini di/** @var $user \Drupal\user\Entity\User */
atas$user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());
Objek pengguna saat ini bukan entitas pengguna. Anda perlu memuat pengguna dengan ID itu untuk mengakses bidang apa pun kecuali informasi yang ditentukan oleh
AccountInterface
.sumber
Saya tidak tahu sejak kapan jawaban ini tidak berfungsi lagi, tetapi dengan Drupal 8.5 solusi di atas mengembalikan nol sepanjang waktu.
Setelah penyelidikan, solusi untuk mengakses bidang khusus dari profil pengguna adalah:
Maka Anda bisa melakukannya
sumber
Entity::load()
didasarkan dari\Drupal::entityManager();
yang sudah usang .Cara yang lebih baik untuk melakukan ini adalah dengan menggunakan entityTypeManager ().
sumber