2015-12-10 53 views
0

我有一些過濾器每頁和gridview。 他們放在pjax。 當我改變一些分頁和排序後,使用我的每頁過濾器 - 從分頁和排序的參數丟失。 我想保存它。怎麼做? 我的代碼:Yii2 pjax搜索保存參數

<?php Pjax::begin(['id' => 'pjax']) ?> 
<?= Html::dropDownList('per-page', Yii::$app->request->get('per-page') != NULL ? Yii::$app->request->get('per-page') : [10 => 10], [1 => 1, 5 => 5, 10 => 10, 25 => 25, 50 => 50, 100 => 100], [ 
    'onchange' => ' 
     $.pjax.reload({ 
      url: "'.Url::to([Yii::$app->controller->action->id, 'id' => Yii::$app->request->get('id')]).'?StandartSearch%5Bdate%5D=" + $(\'#date\').val() + "&per-page=" + $(this).val(), 
      container: "#pjax", 
     }); 
    ', 
    'class' => 'form-control', 
    'id' => 'per-page' 
]) ?> 
<?= GridView::widget([ 
    'id' => 'gridview', 
    'dataProvider' => $dataProvider, 
    'columns' => [ 
     // columns 
    ], 
]); ?> 
<?php Pjax::end() ?> 

回答

1

每頁過濾器被放置pjax容器內。很顯然,當pjax事件完成時他們會迷失方向。

爲了不讓它們丟失當前的選擇,可以將每頁過濾器放置在pjax之外的窗體中。

和pjax上的$ formSelector屬性指向該過濾器表單id。

參考:http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html# $ formSelector細節

+0

ü可以給我一些例子嗎? '<?php Pjax :: begin(['id'=>'pjax','formSelector'=>'#per-page select'])?><?= Html :: beginForm(['user/index']] ,'get',['data-pjax'=>'','id'=>'每頁']); ?><?= Html :: dropDownList('per-page',Yii :: $ app-> request-> get('per-page')!= NULL?Yii :: $ app-> request-> get( '每頁'):[10 => 10],[1 => 1,5 => 5,10 => 10,25 => 25,50 => 50,100 => 100] =>'form-control'])?><?= Html :: submitButton('Ok',['class'=>'btn btn-lg btn-primary','name'=>'hash-button']] )?><?= Html :: endForm()?>'這不起作用 – Fisher

+1

您的過濾字段在這裏
<?php Pjax :: begin(['id'=>'pjax ','formSelector'=>'#form1'])?> 因此,無論從表單中選擇什麼,都將作爲GET參數傳遞給您的動作控制器。您可以使用Yii2 :: $ app-> request-> get('parametername')獲取它們的值並將其添加到模型查詢的where子句中。 –

+0

我把我的過濾器的形式outsite pjax和設置formSelector。使用pjax過濾工作,但仍然丟失當前選擇 – Fisher