Saya mulai menggunakan formulir ini untuk mengakses data dalam modul saya. (Lihat komentar # 1. )
$node->field_test[$node->language][0]['value']
Saya pikir itu tampak seperti solusi yang cukup bagus, tetapi lebih jauh ke bawah pertanyaan yang sama saya menemukan ini :
Jangan berasumsi bahwa 'und' adalah untuk bidang entitas tanpa bahasa, itu juga untuk bidang yang tidak dapat diterjemahkan, dan tanpa modul terjemahan entitas yang semuanya adalah bidang. Selain itu, ada perbedaan dalam hal ini antara berbagai versi 7.x Drupal.
Lebih baik menggunakanfield_get_items()
fungsi yang akan memilah-milah Anda di bawah kode bahasa apa data disimpan.
Dan sekarang saya tidak tahu apakah apa yang saya gunakan dapat memecah sesuatu di jalan.
entity_metadata_wrapper()
sudah tidak digunakan lagi? Saya mencoba memanggil ini dalam modul saya, dan saya dapatkanFatal error: Call to undefined function entity_metadata_wrapper()
- Saya juga melakukan pencarian sumber pada instalasi Drupal 7.12 saya di Dreamweaver, dan muncul dengan 0 hasil di tempat lain dalam kode!$node->field_name[LANGUAGE_NONE][0]['value'] = 'foo';
benar-benar cara yang paling efisien.Untuk membaca, Anda harus selalu dapat menggunakan field_get_items () , yang akan memilih bahasa yang tepat untuk Anda dan juga memeriksa apakah bidang tersebut memiliki nilai.
Sayangnya, API bidang sangat terbatas pada 7.x, tidak ada cara untuk mendapatkan mis. Item bidang pertama, bahkan tidak berani bertanya tentang mendapatkan nilai dengan panggilan fungsi tunggal ... Dan tidak ada field_set_items ( ) rekanan.
Jadi ya, modul entitas API memang menyediakan kelemahan pada API yang lebih baik dan juga dilengkapi dengan biaya overhead yang cukup besar (Ini pada dasarnya mengubah setiap nilai tunggal ke objek pembungkus yang memiliki banyak array info properti bersarang yang menyertainya). Mencoba untuk membuang pembungkus entitas biasanya tidak akan menghasilkan apa-apa atau dinding array yang tidak dapat dibaca.
sumber
sumber