Saya menemukan bahwa masalah terbesar dalam bekerja dengan Drupal 8 adalah saya tidak bisa mendapatkan data yang saya butuhkan. Drupal 8 ingin saya menggunakan metode publik daripada secara manual menelusuri objek. Masalahnya adalah, saya tidak dapat menemukan cara yang konsisten untuk mendapatkan daftar metode yang tersedia! (mereka secara ajaib ada, dan saya merasa seperti saya seharusnya tahu tentang mereka). =
Untuk contoh ini, katakanlah saya memiliki tipe konten dengan bidang video. Saya perlu mendapatkan URL mentah dari file video di bidang itu.
Jadi saya akan mulai dengan id node ($ nid), dan entah bagaimana saya harus mencari cara untuk memuat node. Ini tidak terlalu buruk karena ada banyak contoh. Jadi saya melakukan sesuatu seperti $node = \Drupal\node\Entity\Node::load($nid);
.
Sejauh ini baik. Maka saya perlu mendapatkan nilai dari bidang video saya (field_main_video). Ini mengambil saya SELAMANYA untuk mencari tahu karena ada dokumentasi yang saling bertentangan di sekitar 'net. Akhirnya saya tahu saya harus melakukan sesuatu seperti ini (karena ini adalah item bernilai ganda):
$video = \Drupal\node\Entity\Node::load($nid)->field_main_video->getValue();
... lalu loop melalui array dll. Menggunakan kint tidak membantu saya menemukan ini juga. Karena, misalnya, jika saya kint($node)
dan mencari di bawah metode, saya tidak melihat getValue () sebagai item di sana. Masih tidak mengerikan, karena ada cukup banyak contoh untuk mencari tahu.
Ketika saya masuk lebih dalam, apa yang saya tidak tahu (ini adalah bagian yang penting) adalah bahwa alih-alih mendapatkan id entitas bidang video, lalu memuat entitas, lalu menemukan bidang "uri" di entitas, dll (seperti Saya akan di D7): Ada metode yang memungkinkan saya mendapatkan URI semua dalam baris kode yang sama!
$url = \Drupal\node\Entity\Node::load($nid)->field_main_video->entity->getFileUri();
Tapi bagaimana mungkin saya tahu getFileUri () ini ada? Saya kebetulan menemukannya di sebuah posting blog. Ini benar-benar TIDAK membuat mendapatkan URI lebih mudah daripada di D7 ... tetapi hanya jika Anda tahu (secara ajaib) metode apa yang ada untuk setiap 'level' dari suatu objek.
Pada akhirnya, dengan contoh ini saya bertanya: Bagaimana Anda menemukan semua metode publik untuk setiap tingkat objek dengan cara yang mudah dibaca dan dipahami? Perhatikan bahwa tampaknya harus ada cara drupal-centric (mis. Devel module) untuk melakukan ini daripada mencari secara manual api.drupal.org atau menggunakan sesuatu yang spesifik IDE?