一个控制器中的不同当前页面
Different current page in one controller
我在我的 CakePHP 页面上使用分页并且效果很好,但是我有几个页面是由一个控制器文件中的不同函数生成的,这是一个麻烦的问题。
假设我有两个包含数百个条目的表,我的分页器将它们分开并在一页上显示 15 个条目:
public $paginate = array(
'Table1' => Array(
'order' => array('Table1.id' => 'desc'),
'limit' => 15
),
'Table2' => Array(
'order' => array('Table2.id' => 'asc'),
'limit' => 15
)
);
以及此控制器文件中的函数:
public function showTable1() {
$this->set('table', $this->paginate('Table1'));
}
public function showTable2() {
$this->set('table', $this->paginate('Table2));
}
当我在显示 "Table 1" 时转到下一页时,我转到下一页并且效果很好。但是,当我打开另一个页面时,"Table 2" 由同一控制器文件中的另一个函数生成,不幸的是,它也转到了第二页。
我应该怎么做才能有不同"pages indicators"?我的意思是,当我在"Table 1"上进入第三页时,我不想在进入"Table 2"时进入第三页。
提前致谢。我希望我清楚地提出了我的问题。
不要在控制器顶部设置分页选项,而是尝试删除那个 public $paginate
并在操作内设置所有选项,就像这样(第二个操作的方式类似)
public function showTable1() {
$options = array(
'conditions' => array(
'Table1.id' => whatever
),
'fields' => array(
'Table1.id'
),
'order' => array(
'Table1.id' => 'DESC'
),
'limit' => 15
);
$this->Paginator->settings = $options;
$table = $this->Paginator->paginate('Table1');
$this->set(compact('table'));
}
我在我的 CakePHP 页面上使用分页并且效果很好,但是我有几个页面是由一个控制器文件中的不同函数生成的,这是一个麻烦的问题。
假设我有两个包含数百个条目的表,我的分页器将它们分开并在一页上显示 15 个条目:
public $paginate = array(
'Table1' => Array(
'order' => array('Table1.id' => 'desc'),
'limit' => 15
),
'Table2' => Array(
'order' => array('Table2.id' => 'asc'),
'limit' => 15
)
);
以及此控制器文件中的函数:
public function showTable1() {
$this->set('table', $this->paginate('Table1'));
}
public function showTable2() {
$this->set('table', $this->paginate('Table2));
}
当我在显示 "Table 1" 时转到下一页时,我转到下一页并且效果很好。但是,当我打开另一个页面时,"Table 2" 由同一控制器文件中的另一个函数生成,不幸的是,它也转到了第二页。
我应该怎么做才能有不同"pages indicators"?我的意思是,当我在"Table 1"上进入第三页时,我不想在进入"Table 2"时进入第三页。
提前致谢。我希望我清楚地提出了我的问题。
不要在控制器顶部设置分页选项,而是尝试删除那个 public $paginate
并在操作内设置所有选项,就像这样(第二个操作的方式类似)
public function showTable1() {
$options = array(
'conditions' => array(
'Table1.id' => whatever
),
'fields' => array(
'Table1.id'
),
'order' => array(
'Table1.id' => 'DESC'
),
'limit' => 15
);
$this->Paginator->settings = $options;
$table = $this->Paginator->paginate('Table1');
$this->set(compact('table'));
}