現在、2 つの異なるモデルでページネーションを設定しようとしています。Controller クラスでは、次のことを行っています。
var $paginate = array(
'Model1' => array('limit' => 10, 'recursive' => 0, 'model' => 'Model1, 'order' => array('field1' => 'ASC'), 'paramType' => 'querystring'),
'Model2' => array('limit' => 10, 'recursive' => 0, 'model' => 'Model2', 'order' => array('field2' => 'ASC'), 'paramType' => 'querystring')
);
function view($id = null) {
// ...
$models1 = $this->paginate('Model1', array('Model1.model_id => $id));
if ($models1) {
$this->set('models1', $models1);
}
$models2 = $this->paginate('Model2', array('Model2.model_id => $id));
if ($models2) {
$this->set('models2', $models2);
}
}
ビューでは、リンクは次を使用して生成されます
<?php echo $this->Paginator->numbers(array('model' => 'Model1')); ?>
<?php echo $this->Paginator->numbers(array('model' => 'Model2')); ?>
その結果、正しいページ数を取得できますが、リンクが間違っています。
id
は無視されます。つまり、 の代わりに が得controller/action/id?page= ...
られcontroller/action?page= ...
ます。- リンクのこの部分
sort=Model1.field1&direction=ASC
も機能していません。でページを開くことができましたsort=field1&direction=ASC
。しかし、最初のモデルまたは 2 番目のモデルがソートされている場合、どのように区別する必要があるでしょうか?
ところで、CakePHP 1.3 を使用した場合、これはすべてうまくいきました。