StoreQuery
出典: SugarForum.jp
URLに含まれるクエリ(GET)や、フォームから送信されるデータ(POST)を保持しておくための仕組みを提供するクラス。ListViewでのページネーションや、一括更新に利用されます。
目次 |
基本情報
- ファイル: SugarRoot/modules/MySettings/StoreQuery.php
- 継承: なし
解説
リストビュー(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からクエリを保存