Bagaimana Anda bisa merender bidang dari referensi entitas di templat simpul? [Drupal 8]


9

Untuk konteks, saya berurusan dengan dua jenis konten: artikel dan team_profile. Dalam simpul artikel, kami memiliki bidang referensi entitas yang menarik simpul team_profile untuk dijadikan informasi penulis.

Saya hanya akan merender entitas dengan mode tampilan baru, tetapi desain kami memiliki foto yang ditetapkan langsung di atas tanggal dan nama yang dipublikasikan, di samping satu sama lain: tangkapan layar dari desain informasi penulis

Di D7 saya akan dpm($content)dan menelusuri informasi node, klik dua kali, dan tarik keluar sisa jalur referensi. Saya menggunakan kint dan saya dapat memuntahkan konten referensi entitas ke tingkat tertentu {{ kint(content.field_blog_author[0]['#node']) }},. Level berikutnya yang ingin saya akses adalah values, tetapi mencoba yang berikut memberi saya NULL:

  • content.field_blog_author[0]['#node’][‘values’]
  • content.field_blog_author[0]['#node’]=>values
  • content.field_blog_author[0]['#node’]->values

Saya akhirnya ingin membuat titledan field_team_imagebidang dari node yang direferensikan ( terlihat di sini di keluaran kint ). Saya belum menemukan informasi tentang ini dokumentasi atau dengan mencari. Akankah seseorang membantu saya melepaskan diri?

Jawaban:


13

#node sebenarnya ada simpul saat ini.

Jika Anda ingin mengakses bidang dan nilainya, mulai dengan simpul, bukan konten, yang merupakan render array dengan bidang yang dikonfigurasi.

Anda dapat mengakses entitas referensi seperti ini {{ node.field_blog_author.entity }}.

Dari sana, Anda dapat melanjutkan lagi ke bidang entitas yang direferensikan yang ingin Anda tampilkan. Anda dapat mencoba memanggil metode tampilan, dengan akan melihatnya dengan pengaturan default, Anda juga dapat melewati mode tampilan sebagai string atau pengaturan tampilan array (tidak yakin tentang sintaks yang tepat untuk itu di ranting).

Juga, referensi standar saya, lihat http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet untuk ikhtisar hebat tentang entitas konten, bagaimana mereka disusun dan bagaimana mengakses nilai. Sebagian besar juga berlaku untuk ranting.

Dan terakhir, ketika mencoba untuk mencari tahu apa yang ada di entitas konten, gunakan node.toArray (), yang memberi Anda representasi array yang sangat dekat dengan cara Anda mengaksesnya sebagai objek. Sementara struktur internalnya sangat berbeda.


Terima kasih, Berdir. {{ kint(node.field_blog_author.entity) }}memang menghasilkan array yang bagus dari node yang direferensikan, tapi sekarang saya tidak bisa lebih dalam. {{ kint(node.field_blog_author.entity.title) }}, misalnya, memecah halaman, tidak memuat sumber daya atau apapun melewati wilayah header. Sama untuk nidorang lain. Hanya untuk cekikikan, mencoba memasukkan entitas yang direferensikan dalam konten node dengan {{ node.field_blog_author.entity }}mengembalikan pesan kesalahan yang sepertinya mengatakan bahwa node tidak dapat ditampilkan dalam template seperti itu.
alexbea

Sepertinya ini mungkin nilai yang dilindungi . Apakah itu benar? Mungkin saya perlu membuat mode tampilan hanya untuk foto kemudian menggunakan mode tampilan "label" untuk nama.
alexbea

Ya, mereka dilindungi. Seperti yang saya katakan, gunakan toArray (), yang juga berfungsi pada node.field_blog_author.entity.title adalah objek bidang, jika Anda ingin memberi nilai, Anda perlu ... entity.title.value. Pastikan untuk membaca lembar cheat yang direferensikan, itu menjelaskan banyak hal.
Berdir

1
Saya menghargai bantuannya. Saya tidak begitu mengerti bagaimana cara menggunakan informasi di lembar contekan. Menambahkan .valueberhasil dalam kasus ini dan menjawab pertanyaan awal saya.
alexbea

@berdir url situs rusak.
chalo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.