node_load((int) $nid)
memuat entitas simpul yang terisi penuh. $node->title->value
mendapatkan judul, tetapi bagaimana cara mengakses nilai-nilai bidang di Drupal 8?
63
Saya kira Anda tidak perlu mengubahnya $entity
menjadi array, ini hanya akan berhasil.
$entity->get('field_name')->getValue();
FYI: Menggunakan kint()
dari devel_kint
modul akan memberi tahu Anda semua metode yang tersedia yang dapat digunakan untuk mengakses elemen objek, sehingga relatif var_dump()
kurang membantu.
getValue()
bekerja untuk saya (keduanya pada 8.1.x dan 8.2.x) lihat referensi api->getValue()
bersifat generik dan akan berfungsi terlepas dari jenis bidangnya. Jika Anda menggunakan->value
, itu hanya berfungsi jika nilai bidang disimpan divalue
properti. Ini tidak akan bekerja untuk tipe yang lebih kompleks (mis. Tanggal atau referensi entitas).di drupal 8, $ node menjadi node kelas
atau
akan mengembalikan array nilai.
Jika Anda hanya mengharapkan satu, Anda mungkin juga harus menggunakan array
atau
sumber
Untuk bidang, Anda harus dapat menggunakan
$node->body->value
misalnya. Jika Anda tidak tahu apa nama fieldnya, saya sarankan untuk menginstal modul Devel untuk Drupal 8 dan memeriksa node melalui likedsm($node)
.sumber
Anda selalu dapat melakukan
$entity->toArray()
untuk melihat apa yang ada dalam suatu entitas. Bahkan ketika menggunakan xdebug (misalnya dengan phpstorm) membuat rasa objek entitas sendiri sangat sulit. Saya ragudsm($node)
dalam Drupal 8 masuk akal. Jika Anda bersikeras melakukan debugging di dalam browser (tetapi Anda seharusnya tidak melakukannya, Drupal 8 terlalu rumit untuk di-debug tanpa xdebug)dsm($node->toArray())
adalah yang Anda inginkan.sumber
Drupal\Core\Entity\EntityInterface
telahtoArray
.Gunakan potongan kode berikut untuk mendapatkan nilai-nilai bidang simpul
Ini digunakan untuk mendapatkan id node dari url
Untuk memuat data simpul menggunakan nid
Ini digunakan untuk mendapatkan nilai bidang.
Ini digunakan untuk mendapatkan judul simpul.
sumber
Bagi saya, memiliki
$entity
(simpul) ini berfungsi:menggunakan 8.1.
sumber
Saat menggunakan (cara yang benar sebenarnya):
sumber
Atau
Berikut ini adalah tulisan yang bagus tentang mengakses nilai dari objek simpul https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html
sumber
Sederhana saja:
Jika bidang adalah bidang referensi entitas, ada beberapa cara khusus untuk mendapatkan entitas yang direferensikan.
Untuk mendapatkan id target (elemen pertama):
Untuk mendapatkan entitas yang dimuat (elemen pertama):
Saat digunakan
->entity
di lapangan, ia secara otomatis memuat entitas.Jika bidang dapat berisi beberapa referensi, Anda dapat mengambil semuanya seperti ini:
Itu akan memberi Anda array entitas.
sumber