我有一个页面/讨论,我想在其中实现分页。现在,我希望页面第一次加载为/ discussion,这意味着这就好像是/ discussion / page / 1。对于其他页面,网址将为/ discussion / page / $ pagenumber。
现在,问题是index()。通常,我初始化index()中的所有页面数据,然后使用初始化数据加载视图。但是,在这里我将初始化index()中的默认页面内容,然后是page()中的分页内容。那么,有没有办法从page()向视图发送另一组数据?我不想加载视图,因为它将由index()加载。
但是,我认为不可能做我上面提到的。所以,也许我应该保持我的index()为空并在页面()中进行所有初始化,然后在那里加载视图。你怎么说?
答案 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方法,但这应该满足您的需要。