Posted by starbucks.espre... on October 2, 2015 at 6:32am
hook_views_post_execute でパラメータが入ってきますが、
以下2つの値はどう違うのでしょうか。
$view->exposed_input
$view->exposed_raw_input
また、フックで渡されてくるパラメータにどんな情報がどんな形で入っていて、
どんな用途で使われるといった概要が書かれた資料はあったりしますでしょうか。
(英語でよいです)
調査・実装する際にIDEでブレークポイントを使っていますが、
あまりスピード感を感じる調査方法でないと感じていて、
ソースを書かずとも調査できる方法があればと思いました。
以上、よろしくお願いします。
Comments
以下2つの値はどう違うのでしょうか。 $view->exp
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 API や DrupalContrib に載っている情報以上のことは、リファレンスとしてまとまったものはないように・・・思います。ドキュメントが豊富でないフックなどについては今回のように疑問に思って調べた人が Drupal API のコメントとして書いてくれていたりしますが、そこに載っている以上の情報を調べる場合は、同様のことで困っている人がいないか検索してみるか、ソースコードを直接読む形になるでしょうか。
あまりお役に立たないコメントになってしまいましたが、ご質問へのお答えになっていますでしょうか。。ご参考になればと思います。
exposed_input は exposed
なるほど。そうなのですね。当初、前者の存在しか把握しておらず、
特定の条件の場合、入ってこないパラメータがあったため
疑問に思い質問させていただきました。
とんでもないです、助かりました!
hookのインターフェースについては、モジュールのソースコ
hookのインターフェースについては、モジュールのソースコードとして {module}.api.php というファイルに書かれている事が多いです。viewsの場合は views.api.php になります。
単純なデータであれば、このファイルのサンプルコードを見ると何が入っているかわかると思います。
ただ、Viewsの場合はコードが大きいのと機能が抽象化されているので追うのが大変です。
Drupalに限らずフレームワークとしてよくある実装では、エスケープされているかどうかの違いで
上記のようなインターフェースが提供されていることがあります。
Viewsは特にデータ構造が複雑なので、有益な状態が見つかったらコミュニティで共有したいですね。
私もちょうどViewsのpluginを書いているところなので、何かわかったら共有します。
Viewsの場合はコードが大きいのと機能が抽象化されている
ほんとそうですよね。今回、はじめてViewsのソースをブレークポイント貼りつつ
流れを見たのですが、時間をかけた割には動きがよくわからないという残念な感じでした...汗
それは楽しみです!私も情報を発信する側になれるよう励みます。