Pear::PagerでリンクURLに任意のパラメータを埋め込む方法(importQuery, extraVarsを使う)

Pear::PagerでgetLinksが生成するリンクURLは、デフォルトではGET/POSTで送信したパラメータがそのまま埋め込まれる仕様になっています。

例えば画面のURLが
http://example.com/?action=foo
だとすると、その画面内のページャリンクのURLは、
http://example.com/?action=foo&pageID=1
のようになります。

さてここでページャリンクのURLを "action=foo" ではなく "action=bar" に変更したい場合、どうすればよいでしょうか?

公式マニュアルには書いてないのですが、次のようにすれば実現できます。

$params = array(
  "perPage" => $x,
  "itemData" => $y,

  ....

  'importQuery' => false,
  'extraVars' => array('action' => 'bar'),

  );

$pager = Pager::factory($params);
まず "importQuery" => false によって、$_GETや$_POSTのパラメータがそのまま埋め込まれるのを防ぎます。
つぎに、"extraVars"によって任意の値を埋め込みます。

結果、ページャリンクのURLは下記のようになります。

http://example.com/?action=foo&pageID=1

参考
カテゴリ: