2011-06-10 8 views
3

データベース内のすべての行をリストするアクション+ビューを実装し、zend_paginatorを使用してページをページできるようにしました。また、フォームのポスト(または取得)を取るAction + Viewを作成し、Solrクエリを構築し、結果をページングするためのzend_paginatorアダプタを返します。zend_formを使用して検索した結果をページ区切りする最も慣れ親しんだ方法

私が持っている問題は、ポストバック後のクエリでページを設定する方法です。これは比較的複雑な検索フォーム(検索する8個のフィールド)です。

限り私が見ることができるよう

オプションは次のとおりです。

  • 移動は、新しいURLに を掲載しているパラメータは
  • がクエリ 文字列パラメータを保持し、私 自身のページネータを書くリダイレ​​クト
  • 投稿のフォームの の結果を セッションにシリアル化し、 ページめくり

これらのうち、どれを実行するのが最も邪魔になるのでしょうか?もっと重要なのは、実装が最も簡単です。 HELP !!!!!おかげさまで

+1

これは良い質問です。私は最初のアプローチを使用しました:ポストでparamsを受け入れ、次に、検索、ページネーションなどを実行するパラメータで設定されたルートにリダイレクトします。しかし、私は本当にそれに満足していないと告白します最初の検索)。私はこれらの検索結果ページを(永久に)URLアドレス可能にしたいと思っています。私たちが得た答えを見てみたい。 –

+0

@David最初にポストでparamsを受け入れる理由はありますか?検索がかなり "GETty"操作であることに私は打ち勝ちます... –

+0

フォームアクションは取得する必要がありますが、これは2つの理由でページエンジンコントロールにうまく座っていないことがうれしいです。最初に、ページャコントロールはボックスを無視して、生成されたページリンクからクエリ文字列を削除します。ページング番号コントロールは、クエリ文字列ではなくページ番号をURLパスに格納する要素を追加します。 url。 –

答えて

2

私は誰にも優れた人がいると確信するまでこの回答を受け入れませんが、私は決定に至りました。私はPRGパターン(ポストリダイレクト - 取得)に行ってきました。 www.url.com/form/param1/val/param2/val

array_filterコマンドストリップすべての空のパラメータと、この手段 -

if ($request->isPost()) { 
     if ($form->isValid($request->getPost())) { 
      return $this->_helper->redirector('index','contact',NULL,array_filter($form->getValues())); 
     } 
    } 

これは、パラメータとして、フォームの内容をURLにリダイレクトあなたはzend_paginatorがボックス外で動作するきれいな、ブックマーク可能な、親しみやすいフレンドリーなURLで終わります。