5

私は/paymentsインターフェースを持っており、ユーザーは価格帯、銀行、その他のものでフィルタリングできるはずです。これらのフィルターは標準の選択ボックスです。フィルタフォームを送信すると、すべての投稿データは支払い/検索と呼ばれる別の方法に送られます。このメソッドは検証を実行し、投稿値をセッションflashdataに保存し、URLを介してflashdata名を渡す/paymentsにユーザーをリダイレクトします。

したがって、フィルターのない私の標準のページ付けリンクは、次のようになります。

payments/index/20/
payments/index/40/
payments/index/60/

また、フィルターフォームを送信すると、返されるURLは次のようになります。

payments/index/0/b48c7cbd5489129a337b0a24f830fd93

これはうまく機能します。ゼロを他の何かに変更すると、問題なくページが表示されます。ただし、唯一の問題は、<< 1 2 34>>ページリンクがページネーションオフセット後にハッシュを保持しないことです。CodeIgniterは、その追加のURIセグメントを無視してページリンクを生成しています。

私のuri_segment構成はすでに3に設定されています。

$config['uri_segment'] = 3;

そのハッシュが存在する場合と存在しない場合があるため、uri_segmentを4に設定できません。どうすればこれを解決できるかについてのアイデアはありますか?CIがURIの最後のセグメントとしてオフセットを持つことは必須ですか?たぶん私は間違ったアプローチを試みているので、私はすべての耳です。

皆さんありがとうございます。

編集:なぜ私はあなたが尋ねるかもしれないuriを介してflashdata名を渡すのですか?これは、ユーザーが複数のブラウザタブを開いて、各タブで異なる検索を実行できるようにするためです。フィルタリングを行うたびに、新しいflashdata変数が生成されます。

4

3 に答える 3

3

グーグルから来るユーザーのためだけに、ここに解決策があります:

pagination config配列で、base_urlを次のように変更しました。

$config['base_url'] = site_url('payments/index/' . $this->uri->segment(3) . '/' . $this->uri->segment(4));

ここで、segment(3)はオフセット番号で、segment(4)はハッシュです。したがって、この場合、ハッシュが存在する場合と存在しない場合があり、ページネーションは引き続き機能します。

別のアプローチはこれである可能性があります:あなたが支払いに行き、URLにflashdata IDがない場合、それはユーザーを支払い/検索にリダイレクトし、空のフィルターで空の配列を作成します。次に、payments/_NEW_FLASHDATA_ID_HERE_にリダイレクトします。このように、URLのURLには常にflashdata IDが含まれ、通常どおり、最後のURIセグメントでページネーションオフセットを設定できます。

于 2010-06-29T16:57:00.237 に答える
1

ハッシュが存在するかどうかを確認し、それにuri_segment基づいて設定しないのはなぜですか?

于 2010-06-12T20:25:08.330 に答える
1

ハッシュをセッションアイテムとして設定してみませんか?

$this->session->set_userdata('session_flashdata_hash', $hash);

ハッシュは、設定を解除するまで利用できます

$this->session->unset_userdata('session_flashdata_hash');

または、セッションを破棄するまで。

$this->session->sess_destroy();
于 2010-06-11T16:01:52.973 に答える