我一直在开发一个网站在过去的几个星期使用的笨作的框架。我已经想好的方式来完成的东西,这在很多其他的框架中的其他语言比较简单:排序表。笨关闭查询串通过默认,因为你的网址含有方法的参数。所以URL可能看起来像:

/controller/method/param1/param2

你可能会认为你可能只是增加在 sortBysortOrder 作为两个附加参数的控制方法。我特别不希望做到这一点,主要是因为我想要有一个可重复使用的控制器。当你使用的查询串的参数,PHP可以轻松地告诉你是否存在是一个参数所谓 sortBy.但是,当你使用URL基础的参数,它将随着每个控制器。

我想知道什么我的选择。尽我所能看到他们都是这样的:

  • 通过在我 sortBysortOrder 参数,只是吸它,并制定一些不可再用的部件。
  • 有一个额外的控制,这将储存 sortBysortOrder 在该届会议(虽然它会知道你从哪里来,并把你送回原来的页)。
  • 有一些阿贾克斯功能,这将呼叫控制器上;然后重新载入页面。
  • 哈克笨到把查询串回。实际上,如果这是唯一的选择,任何链接如何做到这一点,将不胜感激。

我只是不能太相信这样一个简单的任务将本这样一个问题!我失去了一些东西?没有任何人有任何建议?


编辑用的澄清:我爱jQuery,我已经在使用它的网站上,所以TableSorter是一个好的选择。然而,我想做服务器的端排序因为有一些页面具有潜在的大量结果,包括分页。

有帮助吗?

解决方案

我已经用这种方法:http://codeigniter.com/forums/viewthread/45709/#217816

我还扩大了它设置cookie根据关的排序,因此当有人回来的表格进行排序相同。

其他提示

如果你确定与排序在客户端, 该Tablesorter插件。 是漂亮的好。

我跑进这个有一个相当复杂的表格。困难的部分是,该表格可能增长/缩小取决于某些变量!!大痛苦:(

这里就是我怎么处理它。

调整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
}

我已经过于简单,但是你的想法。目的是为了有一个网址像这样:

/控制/分拣/列名,排序次序

分选机的功能的电话另一个内部的功能来处理显示/template/视图的逻辑-这工作就是处理分类通话,并获得适当的数据模型。

当然,这可以减少到仅仅是你当前功能:

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
}

这样,你甚至不需要一个单独的功能和可以使用第三段定义的排序。

我已经使用这样的: http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/

从net.tutsplus.com

不幸的是它使用的是什么你不喜欢(/控制/方式/param1/param2)但是我已经加入这种(所显示的功能)对于每一个控制器,当我需要分页。或者做帮手。

其他例子是: http://www.robertmullaney.com/2010/09/19/tablerecord-sorting-made-easier-for-codeigniter/

我最近加入这个 表分类机 (使用原型)来一堆我的网页。它的快速和非常容易实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top