0

現在、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')); ?>

その結果、正しいページ数を取得できますが、リンクが間違っています。

  1. idは無視されます。つまり、 の代わりに が得controller/action/id?page= ...られcontroller/action?page= ...ます。
  2. リンクのこの部分sort=Model1.field1&direction=ASCも機能していません。でページを開くことができましたsort=field1&direction=ASC。しかし、最初のモデルまたは 2 番目のモデルがソートされている場合、どのように区別する必要があるでしょうか?

ところで、CakePHP 1.3 を使用した場合、これはすべてうまくいきました。

4

1 に答える 1

0

両方の呼び出しでページModel1付けしました。確かに 2 番目の呼び出しは次のようになります。

$models2 = $this->paginate('Model2', ...
于 2012-06-13T17:36:50.233 に答える