Bir oluşturma dizisindeki öğeleri bulma


8

Ben sadece bir render dizisinde bir eleman bulmak için çok zaman geçirdim. Genellikle dpm()diziyi yazdırmak için kullanıyorum ve aradığımı bulana kadar seçenekleri genişletiyorum.

Daha büyük dizilerde hantal. Kullandığımda print_r(), bir metin araması yapabilirim, ancak sonra dizinin yapısını görmek ve öğenin yolunu bulmak zor.

Başka hangi yöntemleri önerebilirsiniz?


Bu soru benim tam temsilcileri eklemek için değer !!
niksmac

Tüm bu kakaları güzelleştirmek için bazı modüller var . Bakmak için çok tembelim ama dev modülü krumo ve diğer dökümü arttırıcılar ile entegre oluyor, eğer doğru hatırlıyorsam. Sonra her zaman iyi bir eski hata ayıklayıcı vardır, burada nesneleri gerçekten inceleyebilir ve aşağı çekebilirsiniz.
stefgosselin

@ stefgosselin OP zaten Devel modülünü kullanıyor, dpm()sanırım verilen bir isim / anahtar ile bir render dizisi içinde bir alt eleman bulmak için bir fonksiyon arıyor
Clive

@MotoTribe Bunu doğru bulduysam ve bir işlev arıyorsanız, ne tür bir girdi / çıktı almayı / vermeyi umuyorsunuz? $elements = find_elements_by_key($render_array, 'element_name');Oluşturma dizisindeki tüm öğelerin bir dizisini eşleşen bir anahtarla döndürmek ister misiniz ?
Clive

doğru. Devel'de "krumo display = devre dışı" bir metin araması kullanabileceğim daha iyi biçimlendirilmiş bir dizi gösterir. İdeal olarak, krumo çıkışında bir arama fonksiyonu ve tam dizi yolunu ['...'] ['...'] yazmak zorunda kalmadan kopyalayabileceğim bir "kopyala" özelliği olmalıdır. Evet, fonksiyonun da harika olurdu. Bu bir Drupal veya PHP işlevi değil, değil mi?
uwe

Yanıtlar:


9

Devel: Search Krumo için bir genişletme modülü var . Krumo / dpm mesajlarında metin bulmak ve bu yerlerde dizi açmak için Javascript kullanır.
Buna benzer:
resim açıklamasını buraya girin

Güncelleme

22 Nisan 2012'den sonra sdpm()arama kutusunu görmek için işlevi kullanmalısınız .


hiçbir şekilde, tam olarak aradığım şey !!! Teşekkürler!!!
uwe

@MotoTribe, bu yüzden kabul edilebilir, sanırım :)
kalabro

üzgünüm, bunu özledim. Bu harika bir araç, şimdi her zaman kullanın !!!
12'de

bu uzantı modülünü nereye koyacağım? ya devel dizini [\ www \ drupal \ sites \ all \ modules \ devel] içinde ya da katkıda bulunulan modüller dizini içinde [\ www \ drupal \ sites \ all \ modules]
GiLL

Sdpm () fonksiyonunun nasıl kullanılacağını söyleyebilir misiniz? nereye yapıştırmalı? Çok teşekkürler.
CodeNext

5

Oluşturma dizileriyle ilgili en büyük sorunlardan biri, aradığınız bilgilerin çoğu kez salt okunur kopyalarının olmasıdır. Render çıktısını gerçekten değiştirmek istiyorsanız, doğru çıktıyı bulmalısınız. Genellikle dpm () kullanın ve sonra sayfa kaynağını görüntülemek ve orada çıktı üzerinden arama, ihtiyacım olanı bulana kadar iki ekran arasında ileri geri çevirme.

Terminale verilen bir yol için bir oluşturma dizisinin içeriğini dökmek istiyorsanız (örneğin, grep'ten geçirmek için), şöyle bir şey yapabilirsiniz:

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);'

Ayrıca, tarayıcınızda sadece 'sayfa kaynağını görüntüleyebilir' ve panoyu kullanabilirsiniz, ancak yukarıdaki, işleme dizilerini görüntülemek için bir Drush komutunun başlangıcı olabilir.

Güncelleme: Bu konuda gerçekten iyi bir makale buldum: Korkunç İşleme Dizisi - muhtemelen şimdiye kadar gördüğüm render dizilerinin en iyi tedavisi. Ayrıca devel_themer modülünü de açıklamalıydım ; İlgilendiğiniz render dizisinin "yakınlaştırılması" konusunda iyi bir iş çıkarır.


Korkunç Oluşturma Dizisi'ne bağlantı verdiğiniz için teşekkür edemeyiz - harika makale!
Andy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.