Cara menemukan elemen dalam array render


8

Saya hanya menghabiskan banyak waktu mencari elemen dalam array render. Saya biasanya menggunakan dpm()untuk mencetak array, dan kemudian memperluas opsi sampai saya menemukan apa yang saya cari.

Pada array yang lebih besar itu tidak praktis. Ketika saya menggunakan print_r(), saya bisa melakukan pencarian teks, tetapi kemudian sulit untuk melihat struktur array dan menemukan path ke elemen.

Metode apa lagi yang bisa Anda sarankan?


Pertanyaan ini layak untuk menambah perwakilan penuh saya !!
niksmac

Ada beberapa modul untuk memperindah semua kaka ini . Saya terlalu malas untuk mencari tetapi modul dev terintegrasi dengan krumo dan penambah-sampah lainnya, jika saya ingat dengan benar. Lalu selalu ada debugger tua yang bagus, di mana Anda benar-benar dapat memeriksa dan mengemudi di objek bahkan.
stefgosselin

@stefgosselin OP sudah menggunakan modul Devel dengan dpm(), saya pikir dia sedang mencari fungsi untuk menemukan sub-elemen dalam array render dengan nama / kunci yang diberikan
Clive

@MotoTribe Jika saya benar dan Anda sedang mencari fungsi, input / output seperti apa yang ingin Anda berikan / dapatkan dari itu? Apakah akan seperti $elements = find_elements_by_key($render_array, 'element_name');mengembalikan array semua elemen dalam array render dengan kunci yang cocok?
Clive

benar. Dalam devel "krumo display = nonaktif" menunjukkan array yang diformat lebih baik di mana saya dapat menggunakan pencarian teks. Idealnya harus ada fungsi pencarian di output krumo dan fitur "copy" di mana saya dapat menyalin path array lengkap ['...'] ['...'] tanpa harus mengetiknya. Ya, fungsi Anda juga akan luar biasa. Itu bukan fungsi Drupal atau PHP, bukan?
uwe

Jawaban:


9

Ada modul ekstensi untuk Devel : Cari Krumo . Menggunakan Javascript untuk menemukan teks dalam pesan Krumo / dpm dan membuka array di tempat-tempat itu.
Terlihat seperti ini:
masukkan deskripsi gambar di sini

Memperbarui

Setelah 22 April 2012, Anda harus menggunakan sdpm()fungsi untuk melihat kotak pencarian.


tidak mungkin, itulah yang saya cari !!! Terima kasih!!!
uwe

@MotoTribe, jadi bisa diterima, saya pikir :)
kalabro

maaf, ketinggalan yang itu. Ini adalah alat yang luar biasa, gunakan sepanjang waktu sekarang !!!
uwe

di mana saya meletakkan modul ekstensi ini? baik di dalam direktori devel [\ www \ drupal \ sites \ all \ modules \ devel] atau di dalam direktori modules kontribusi [\ www \ drupal \ sites \ all \ modules]
GiLL

Bisakah Anda sebutkan bahwa cara menggunakan fungsi sdpm ()? di mana untuk menempel? Sangat berterima kasih.
CodeNext

5

Salah satu masalah besar dengan render array adalah seringnya ada banyak salinan read-only dari informasi yang Anda cari. Jika Anda ingin benar-benar mengubah hasil render, Anda harus menemukan yang tepat. Saya biasanya menggunakan dpm (), dan kemudian melihat sumber halaman dan mencari melalui output di sana, membalik-balik antara dua layar sampai saya menemukan apa yang saya butuhkan.

Jika Anda ingin membuang isi array render untuk jalur yang diberikan ke terminal (misalnya untuk meneruskannya melalui grep), Anda bisa melakukan sesuatu seperti ini:

drush ev '$router_item=menu_get_item("node/7"); require_once(DRUPAL_ROOT .
"/" . $router_item["include_file"]);
$render_array=call_user_func_array($router_item["page_callback"],
$router_item["page_arguments"]); print_r($render_array);'

Anda juga bisa hanya 'melihat sumber halaman' di browser Anda dan menggunakan clipboard, tentu saja, tetapi di atas mungkin merupakan awal dari perintah Drush untuk melihat array render.

Pembaruan: Saya menemukan artikel yang sangat bagus tentang hal ini: The Scary Render Array - mungkin pengobatan terbaik dari array render yang telah saya lihat sejauh ini. Saya seharusnya juga menyebutkan modul devel_themer di muka; itu berfungsi dengan baik pada "memperbesar" pada bagian array render yang Anda minati.


Tidak bisa cukup berterima kasih karena menautkan ke The Scary Render Array - artikel yang bagus!
Andy
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.