StoreQuery

出典: SugarForum.jp

URLに含まれるクエリ(GET)や、フォームから送信されるデータ(POST)を保持しておくための仕組みを提供するクラス。ListViewでのページネーションや、一括更新に利用されます。

目次

基本情報


解説

リストビュー(view.list.php)をカスタマイズする際に、下記のコードを挿入しておくと、$_REQUESTに含まれるクエリをStoreQueryとして保存できます。一旦、StoreQueryとして保存されると、次回そのリストビューを表示する際には(指定が無くても)直近の$_REQUESTに含まれるクエリを再現します。

$storeQuery = new StoreQuery();
if(!isset($_REQUEST['query'])){
  $storeQuery->loadQuery($this->module);
  $storeQuery->populateRequest();
}else{
  $storeQuery->saveFromRequest($this->module);
}

具体的な例として、Booksモジュール(仮)に以下のクエリ付きで一旦アクセスしたとします。

index.php?module=Books&action=ListView&query=true&Type=Mistery&Author=Doyle

コナン・ドイル(Doyle)のミステリーが指定されているので、おそらくホームズシリーズが一覧には並ぶことでしょう。さて、ここで上記のコードが実装されていれば、StoreQueryとして保存されたはずなので、次回、

index.php?module=Books&action=ListView

といった具合に、$query以下が省略されても、同じ一覧が表示されます。

クエリー省略時に、前回のクエリーが再現されることは、

  • ページネーション
  • 一括更新

において重要です。なぜなら、ページネーションの「次へ」ボタンや「前へ」ボタンをクリックした際、クエリとしては何も渡されないからです。その代わり、StoreQueryを通じて直近のクエリを参照しているわけです。一括更新の場合も、同様です。

プロパティ

なし

メソッド

clearQuery()

保存されたクエリの消去

loadQuery()

保存されたクエリの読み込み

populateRequest()

$_REQUESTと$_GETに保存されていたクエリのデータを移す

saveFromRequest()

現在の$_REQUESTからクエリを保存

saveFromGet()

現在の$_GETからクエリを保存


最終更新 14:27, 2008年1月26日 (土)。   このページは 2,337 回アクセスされました。