2016-05-11 13 views
0

私は最初に私がdataproviderを使ってリストビューをレンダリングします。ユーザーの検索時には、データプロバイダaをデータプロバイダbに更新します。それは仕事ですが、次のページのデータを表示するためにクリックします。表示されたデータはdataProvider 'a'に属し、 'b'に属しません。どうしてか分かりません。ページ区切りリストビューが正しく表示されない場合

これは、コントローラ

$data = Post::get(); 
    if(isset($_POST['btn_search'])) 
    { 
     $a= $_POST['a']; 
     $b= $_POST['b']; 
     $c= $_POST['c']; 
     $data = Post::get($a, $b, $c); 
    } 
    return $this->render('search', array(
     'data' => $data 
    )); 

これはビューです:

<?php 
    \yii\widgets\Pjax::begin([ 
     'enablePushState' => false, 
    ]); 
    ?> 
    <?= 
    ListView::widget([ 
     'dataProvider' => $data, 
     'options' => [ 
      'tag' => 'div', 
      'class' => 'panel-body list-group list-group-contacts', 
      'id' => 'list-search', 
     ], 
     'itemView' => function ($model, $key, $index, $widget) { 
      return $this->render('_list_search',['model' => $model]); 

      // or just do some echo 
      // return $model->title . ' posted by ' . $model->author; 
     }, 
     'itemOptions' => [ 
      'tag' => false, 
     ], 
     'pager' => [ 
      'options' => [ 
       'style' => 'margin-top: 10px; width: auto; margin-bottom: 10px; margin-right:5px', 
       'class' => 'pagination pager' 
      ], 
      'nextPageLabel' => '<span class="glyphicon glyphicon-chevron-right"></span>', 
      'prevPageLabel' => '<span class="glyphicon glyphicon-chevron-left"></span>', 
      'maxButtonCount' => 5, 
     ], 
    ]); 
    ?> 
    <?php \yii\widgets\Pjax::end() ?> 

は私を助けてください。本当にありがとう。

+0

あなたはリストビューのページ付けをクリックすると、Pjaxは「GET」リクエストを送信しますあなたの行動に「POST」データを取得しようとすると、あなたの「POST」パラメータはページネーションリンクを更新しません。 "GII"を使用してCRUDを作成してみてください.YII2の機能を参照してください。 –

答えて

0

だから、1つのデータプロバイダを使用してページネーションを設定してから、別のものをリストビューに渡します。

私は特に、あなたのモデルを見てみましょう:

public function search($params) 
{ 
... 
... 
return $dataProvider; 
} 

私は問題がであると思う:

return $this->render('search', array(
    'data' => $data 
+0

アドバイスをいただきありがとうございます。 –

関連する問題