Codeigniter分页概念问题

时间:2011-07-04 19:45:31

标签: php codeigniter

我有一个页面/讨论,我想在其中实现分页。现在,我希望页面第一次加载为/ discussion,这意味着这就好像是/ discussion / page / 1。对于其他页面,网址将为/ discussion / page / $ pagenumber。

现在,问题是index()。通常,我初始化index()中的所有页面数据,然后使用初始化数据加载视图。但是,在这里我将初始化index()中的默认页面内容,然后是page()中的分页内容。那么,有没有办法从page()向视图发送另一组数据?我不想加载视图,因为它将由index()加载。

但是,我认为不可能做我上面提到的。所以,也许我应该保持我的index()为空并在页面()中进行所有初始化,然后在那里加载视图。你怎么说?

4 个答案:

答案 0 :(得分:4)

您不需要“页面”和“索引”方法,只需使用route

使用index()方法并删除page()方法:

$route['discussion/page/(:num)'] = 'discussion/index/$1';

/discussion仍向您提供第1页,请求discussion/page/32将映射到discussion/index/32

这假设您将页码作为参数(url段)抓取,如下所示:

function index ($page = 1) {}

如果您正在做其他事情,路线仍然合适,可能不是提供的路线。

答案 1 :(得分:1)

我建议看看PEAR真棒Pager package。它会自动生成一个寻呼机,并根据(GET)输入变量为您提供正确的索引。

答案 2 :(得分:0)

我不太确定你的问题是什么。

如果你有index()方法,你可以设置那里的所有分页信息,记住你必须告诉分页库哪个uri段将用于获取页码,而且没有任何内容使用index()

控制器中没有page()方法,所有页面都是相同的index(),具有不同的分页数据集,由定义为页码的uri_segment给出,这意味着所有与分页查询集无关的内容在页面中完整无缺。

答案 3 :(得分:0)

听起来你正试图让你的页面方法装饰你的索引方法。在不了解控制器的整体结构的情况下,确实没有太多可说的,但听起来下面的内容会有所帮助:

function page( $pos )
{
    $this->index( $pos );
}

// a default parameter lets you ensure that this does not neet to have a page set.
function index( $pos = 0 )
{
   // when calling the DB (I'm guessing that is where the pagination really happens)
   // COUNT should be defined in the config if possible.
   $this->db->where/*... add more here...*/->limit( COUNT, $pos );
}

实际上,您应该查看您的URI路由类或使用_resolve方法,但这应该满足您的需要。