8

私は過去数週間、CodeIgniterをフレームワークとして使用してサイトを開発してきました。私は何かを達成するための最良の方法を考えてきました。それは他の言語の他の多くのフレームワークでは比較的単純です:ソート可能なテーブルです。URLにメソッドパラメータが含まれているため、CodeIgniterはデフォルトでクエリ文字列をオフにします。したがって、URLは次のようになります。

/controller/method/param1/param2

コントローラメソッドに2つの追加パラメータとして追加するだけでよいsortByと思うかもしれません。sortOrder私は特にそれをしたくありません。主に、再利用可能なコントローラーが欲しいからです。クエリ文字列パラメータを使用すると、PHPは。というパラメータがあるかどうかを簡単に知ることができますsortBy。ただし、URLベースのパラメーターを使用している場合は、コントローラーごとに異なります。

私は自分の選択肢が何であるか疑問に思いました。私が見る限り、それらは次のようなものです。

  • sortBymyとparametersを渡して、sortOrderそれを吸い上げて、再利用できないコンポーネントを開発します。
  • sortByとをセッションに保存する追加のコントローラーを用意しますsortOrder(ただし、どこから来たのかを認識し、元のページに戻す必要があります)。
  • 上記のコントローラーを呼び出す、ある種のAJAX関数があります。次に、ページをリロードします。
  • CodeIgniterをハックして、クエリ文字列をオンに戻します。実際、これが唯一のオプションである場合、これを行う方法へのリンクをいただければ幸いです。

このような単純な作業でこのような問題が発生するなんて信じられません。私は何かが足りないのですか?誰か推奨事項はありますか?

私はjQueryが大好きで、すでにサイトで使用しているので、TableSorterは良いオプションです。ただし、ページ付けなど、結果が多くなる可能性のあるページがあるため、サーバー側での並べ替えを行いたいと思います。

4

3 に答える 3

2

クライアント側でのソートに問題がなければ、jQuery 用の Tablesorter プラグインは非常に便利です。

于 2008-09-22T14:51:40.457 に答える
1

私はかなり複雑なテーブルでこれに遭遇しました。難しいのは、特定の変数に応じてテーブルが拡大/縮小する可能性があることでした。大きな痛み:(

これが私がそれをどのように扱ったかです。

system / application / config / config.phpを調整して、URIでコンマ文字を使用できるようにしました。

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-,';

並べ替え機能でコントローラーを調整します。

function sorter() {
  //get the sort params
  $sort = explode(",",$this->uri->segment(3)); //the 3rd segment is the column/order
  //pass the params to the model
  $data = $this->model_name->get_the_data($sort[0],$sort[1]);
  $this->_show($data);
}
function _show($data) {
  //all the code for displaying your table
}

私は単純化しすぎましたが、あなたはその考えを理解しています。目的は、次のようなURLを持つことです。

/ controller / sorter / columnname、sortorder

ソーター関数は、別の内部関数を呼び出して、表示/テンプレート/ビューロジックを処理します。その仕事は、並べ替え呼び出しを処理し、モデルから適切なデータを取得することです。

もちろん、これは現在の関数だけに減らすことができます。

function showGrid() {
  $sort = $this->uri->segment(3);
  if ($sort) {
    //get the data sorted
  } else {
    //get the data the default way
  }
  //rest of your view logic
}

そうすれば、別の関数も必要ありません。3番目のセグメントを使用して並べ替えを定義できます。

于 2008-09-23T05:16:05.357 に答える
0

最近、このテーブル ソーター(Prototype を使用) を多数のページに追加しました。高速で、実装が非常に簡単です。

于 2008-09-22T14:48:00.623 に答える