レンダー配列の要素を見つける方法


8

レンダー配列の要素を見つけるのに多くの時間を費やしました。私は通常dpm()、配列の印刷に使用し、探しているものが見つかるまでオプションを展開します。

大きなアレイでは面倒です。を使用するprint_r()と、テキスト検索を実行できますが、配列の構造を確認して要素へのパスを見つけるのは困難です。

他にどのような方法を提案できますか?


この質問は私の担当者全員を追加する価値があります!!
niksmac 2012

このすべてのcacaをきれいにするいくつかのモジュールがあります。私は見に行くのが面倒ですが、私が正しく覚えていれば、devモジュールはkrumoおよび他のダンプエンハンサーと統合されます。次に、常に古き良きデバッガーが存在し、オブジェクトを実際に検査してドライブダウンすることもできます。
stefgosselin

@stefgosselin OPは既にでDevelモジュールを使用していdpm()ます。彼は、指定された名前/キーでレンダー配列内のサブ要素を見つける関数を探していると思います
Clive

@MotoTribeもし私がそれを正しく持っていて、あなたが関数を探しているなら、どんな種類の入出力を与えたり、そこから得ることを望んでいますか?$elements = find_elements_by_key($render_array, 'element_name');一致するキーを持つレンダー配列のすべての要素の配列を返すようなものでしょうか?
クライヴ

正しい。develでは、 "krumo display = disabled"は、テキスト検索を使用できる、より適切にフォーマットされた配列を示します。理想的には、krumoの出力に検索機能があり、「コピー」機能を使用して、入力することなく完全な配列パス['...'] ['...']をコピーできます。ええ、あなたの機能も素晴らしいでしょう。それはDrupal関数でもPHP関数でもありませんよね。
uwe

回答:


9

Develの拡張モジュール:Search Krumoがあります。Javascriptを使用して、Krumo / dpmメッセージ内のテキストを検索し、それらの場所で配列を開きます。
このように見えます:
ここに画像の説明を入力してください

更新

2012年4月22日以降は、sdpm()関数を使用して検索ボックスを表示する必要があります。


まさかそれがまさに私が探していたものです!!! ありがとう!!!
uwe

@MotoTribe、それが受け入れられると思います:)
kalabro '20年

すみません、それを逃しました。これは素晴らしいツールです。今すぐ使用してください!!!
uwe

私はこの拡張モジュールをどこに置きましたか?develディレクトリ[\ www \ drupal \ sites \ all \ modules \ devel]内、または提供されたモジュールディレクトリ[\ www \ drupal \ sites \ all \ modules]内
GiLL

sdpm()関数の使い方を教えていただけませんか?どこに貼り付けますか?どうもありがとう。
CodeNext

5

レンダー配列の大きな問題の1つは、多くの場合、探している情報の読み取り専用のコピーが多数存在することです。レンダー出力を実際に変更したい場合は、適切なものを見つける必要があります。私は通常dpm()を使用し、ページのソースを表示してそこで出力を検索し、必要なものが見つかるまで2つのディスプレイ間を前後に切り替えます。

端末への特定のパスのレンダー配列の内容をダンプする場合(たとえば、grepを介して渡す場合)、次のようなことができます。

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

もちろん、ブラウザで「ページのソースを表示」してクリップボードを使用することもできますが、上記がDrushコマンドの開始でレンダー配列を表示する場合もあります。

更新:私はこのテーマについて本当に良い記事を見つけました:怖いレンダーアレイ -これまで見てきたレンダーアレイのおそらく最高の扱いです。また、前もってdevel_themerモジュールについても言及しているはずです。関心のあるレンダー配列のセクションを「ズームイン」するのに適しています。


The Scary Render Arrayにリンクしていただきありがとうございます。素晴らしい記事です!
アンディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.