This is my first post in this forum and I need help with Pjax search form and Listview
In my search form file I have:
<?php Pjax::begin(['id' => 'jobs_search'])?>
<?php $form = ActiveForm::begin([
'options' => ['data-pjax' => true],
'enableClientValidation' => false,
'action' => ['site/index'],
'method' => 'GET'
]); ?>
<?= $form->field($model, 'keywords')->textInput(['placeholder' => 'Search with Keywords'])?>
<?= $form->field($model, 'category')->dropDownList(ArrayHelper::map(Category::find()->orderBy('order')->asArray()->all(),'title','title'),[
'prompt' => 'Category'
]) ?>
<?= $form->field($model, 'city')->dropDownList(ArrayHelper::map(City::find()->orderBy('order')->all(),'name','name'),[
'prompt' => 'Location'
])?>
<div class="input-group-button">
<?= Html::submitButton('<i class="fa fa-search fa-lg" aria-hidden="true"></i> ', ['class' => 'button expanded']) ?>
</div>
<?php ActiveForm::end(); ?>
<?php \yii\widgets\Pjax::end()?>
$script = <<<JS
$("document").ready(function(){
$("#jobs_search").on("pjax:end", function() {
$.pjax.reload({container:"#jobs",method: "POST"}); //Reload GridView
});
});
JS;
$this->registerJs($script);
In my index file I have:
<?php Pjax::begin(['id' => 'jobs', 'timeout' => false, 'enablePushState' => true, 'clientOptions' => ['method' => 'POST']]) ?>
<?= ListView::widget([
'dataProvider' => $dataProvider,
'itemView' => '_job',
'itemOptions' => [
'class' => 'item'
],
'layout' => "<div class='jobs-listing'>{items}</div><div class='top-margin text-center columns'>{pager}</div>",
'pager' => [
'class' => \kop\y2sp\ScrollPager::className(),
'triggerTemplate' => '<div class="ias-trigger"><a class="button button-load-more">Load More</a></div>',
'spinnerTemplate' => '<div class="ias-spinner" style="text-align: center;background-color: white"><img src="{src}"/></div>',
'spinnerSrc' => \yii\helpers\Url::base() . '/frontend/assets/images/ring.gif',
'triggerOffset' => '6',
'noneLeftText' => ''
]
]); ?>
<?php Pjax::end() ?>
In Controller:
public function actionIndex()
{
$searchModel = new JobsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider
]);
}
The Problem is every time I Submit the form submision is doubled and pagination’s spiner is displayed multiple time
Example:
First I choose City1 from dropdown and Submit,I get 2 pagination’s spiners.
Second I choose City2 and Submit,I get 3 pagination’s spinners,
Third I chose City 3 and Submit again,I get 4 spinners.
I think this is happening because form is resubmitted every time.
Sorry for my english.
TIA