hookの調査方法について

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
starbucks.espresso.journey's picture

hook_views_post_execute でパラメータが入ってきますが、
以下2つの値はどう違うのでしょうか。

$view->exposed_input
$view->exposed_raw_input

また、フックで渡されてくるパラメータにどんな情報がどんな形で入っていて、
どんな用途で使われるといった概要が書かれた資料はあったりしますでしょうか。
(英語でよいです)

調査・実装する際にIDEでブレークポイントを使っていますが、
あまりスピード感を感じる調査方法でないと感じていて、
ソースを書かずとも調査できる方法があればと思いました。

以上、よろしくお願いします。

Comments

hgoto's picture

以下2つの値はどう違うのでしょうか。

$view->exposed_input
$view->exposed_raw_input

Views のコードをちょろっと見たかぎりでは、 exposed_input は exposed filter のフォームが submit されたときに送られてきた値のうち明らかに不要なものを取り除いたりしたもので、 exposed_raw_input は送信内容をそのまま格納しただけのもの、のようです。

前者には $view->get_exposed_input() というアクセサも用意されているため通常は exposed_input が使われることが想定されているように思います( exposed_raw_input は元のデータがどうしても欲しい場合限定、でしょうか)。

Drupal 8 beta 16 の Views も同じような感じになっていますので、特に困らない場合は exposed_inputの方を使う形がよろしいものと思います。

また、フックで渡されてくるパラメータにどんな情報がどんな形で入っていて、
どんな用途で使われるといった概要が書かれた資料はあったりしますでしょうか。
(英語でよいです)

こちらについては残念ながら、 Drupal APIDrupalContrib に載っている情報以上のことは、リファレンスとしてまとまったものはないように・・・思います。ドキュメントが豊富でないフックなどについては今回のように疑問に思って調べた人が Drupal API のコメントとして書いてくれていたりしますが、そこに載っている以上の情報を調べる場合は、同様のことで困っている人がいないか検索してみるか、ソースコードを直接読む形になるでしょうか。

あまりお役に立たないコメントになってしまいましたが、ご質問へのお答えになっていますでしょうか。。ご参考になればと思います。

exposed_input は exposed

starbucks.espresso.journey's picture

exposed_input は exposed filter のフォームが submit されたときに送られてきた値のうち明らかに不要なものを取り除いたりしたもので、 exposed_raw_input は送信内容をそのまま格納しただけのもの、のようです。

なるほど。そうなのですね。当初、前者の存在しか把握しておらず、
特定の条件の場合、入ってこないパラメータがあったため
疑問に思い質問させていただきました。

あまりお役に立たないコメントになってしまいましたが

とんでもないです、助かりました!

blauerberg's picture

hookのインターフェースについては、モジュールのソースコードとして {module}.api.php というファイルに書かれている事が多いです。viewsの場合は views.api.php になります。

単純なデータであれば、このファイルのサンプルコードを見ると何が入っているかわかると思います。
ただ、Viewsの場合はコードが大きいのと機能が抽象化されているので追うのが大変です。

$view->exposed_input
$view->exposed_raw_input

Drupalに限らずフレームワークとしてよくある実装では、エスケープされているかどうかの違いで
上記のようなインターフェースが提供されていることがあります。

Viewsは特にデータ構造が複雑なので、有益な状態が見つかったらコミュニティで共有したいですね。
私もちょうどViewsのpluginを書いているところなので、何かわかったら共有します。

starbucks.espresso.journey's picture

Viewsの場合はコードが大きいのと機能が抽象化されているので追うのが大変です。

ほんとそうですよね。今回、はじめてViewsのソースをブレークポイント貼りつつ
流れを見たのですが、時間をかけた割には動きがよくわからないという残念な感じでした...汗

有益な状態が見つかったらコミュニティで共有したいですね。

それは楽しみです!私も情報を発信する側になれるよう励みます。