2016-08-11 3 views
1

私は1つのWebページを持っています。このページでは、異なる2つのテーブルごとに合計2ページ付けが必要です。1つのページで独立して動作しない2つのページング - CakePHP

私は異なるページ付けで試しましたが、お互いに依存しています。

たとえば、最初のテーブルの2番目のページを選択すると、2番目のテーブルが自動的に2番目のページに変更されました。ここ

は私の制御コードのコードである:ここ

$page = $this->pageForPagination('User'); 
$this->paginate = array(
     'User' => array(
      'fields' => array(
       'User.*', 
      ), 
      'conditions' => $userConditions, 
      'page' => $page, 
     ), 
    ); 
$this->set('users', $this->paginate('User')); 

$page1 = $this->pageForPagination('Game'); 
$this->paginate = array(
     'Game' => array(
      'fields' => array(
       'Game.*', 
      ), 
      'conditions' => $conditions, 
      'page' => $page1, 
     ), 
    ); 
$this->set('games', $this->paginate('Game')); 

は、上記のコードで使用される機能である。

function pageForPagination($model) { 
    $page = 1; 
    $sameModel = isset($this->params['named']['model']) && $this->params['named']['model'] == $model; 
    $pageInUrl = isset($this->params['named']['page']); 
    if ($sameModel && $pageInUrl) { 
     $page = $this->params['named']['page']; 
    } 

    $this->passedArgs['page'] = $page; 
    return $page; 
} 

ここに私のビューコードである:

echo $this->element('paging', array('model' => 'User')); 
echo $this->element('paging', array('model' => 'Game')); 

Iは上記のコードをこのURLから参照しました:http://debuggable.com/posts/how-to-have-multiple-paginated-widgets-on-the-same-page-with-cakephp:48ad241e-b018-4532-a748-0ec74834cda3

解決策がまだ得られなかったので、誰でも助けてくれますか?

+2

。異なるページ設定には異なるパラメータを使用する必要があります。 –

+0

あなたの意見は分かりません。 コードのアドバイスをお願いできますか? 申し訳ありませんが、私はCakePHPで新しくなっています。 –

+1

ページングするモデルをどのように知っているのでしょうか?条件はありますか?クエリ文字列パラメータは、私が推測する両方のページングで同じです。 –

答えて

0

あなたが言及したリンクの解決策は、デフォルトのページネーションURLをオーバーライドすることで、両方のモデルを同時に表示することはありません。あなたはソリューションを完全に実装していません。

は、あなたは、このような各モデルの手動でページ番号を抽出する必要があります。

function pageForPagination($model) { 
    if (isset($this->params['named']['pagefor'.$model]) 
     return $this->params['named']['pagefor'.$model]; 
    else 
     return 1; 
} 

以下のコード:

echo $this->element('paging', array('model' => 'User')); 
echo $this->element('paging', array('model' => 'Game')); 

は、デフォルトのページネーションのビューを使用するようにCakePHPを引き起こし、中のURLデフォルトのページネーションは両方のモデルで同じです。カスタムページ分割ビューを使用し、ページリンクのモデルを指定する必要があります。あなたのビュー内の各ページのリンクの

/Controller/Action/pageforUser:215/pageforGame:35 

:あなたはこのようなURLパターンを使用することができます上記編集された機能については

私はこのURLパターンを使用するためのベストプラクティスは、リンクは以下のパターンの形に作成されるように改ページヘルパーをオーバーライドすることであると思う:彼らは同じパラメータを共有しているので

'/Controller/Action/pagefor[Model]:215'.[other parameters] 
+0

こんにちは@Alto、 pageFor in要素ページを追加するにはどうすればよいですか? 私に助けてもらえますか? –

+0

はい@Alto Navin Nakumから質問されたことについて助けてくれますか? –

関連する問題