2015-03-25 53 views
0

你好,我在yii2中使用pjax進行搜索。我正在關注this link。 上面給出的提交鏈接工作正常,但我想執行滑塊的更改。
Here is screenshort of my form .

的index.php
Yii2 Gridview數據在Pjax中沒有變化

<div class="bank-index">  
<?php echo $this->render('_search', ['model' => $searchModel]); ?> 
<?php \yii\widgets\Pjax::begin(); ?> 

<?= GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 

     'id', 
     'bank_name', 
     'state', 
     'district', 
     'city', 
     'branch', 
     'time', 
     ['class' => 'yii\grid\ActionColumn'], 
    ], 
]); ?> 

_search.php

<div class="bank-search"> 

<?php Pjax::begin(['id' => 'Pjax_bank_id']); ?> 

<?php $form = ActiveForm::begin([ 
    'action' => ['index'], 
    'method' => 'get', 
]); ?> 

<?= $form->field($model, 'id') ?> 

<?= $form->field($model, 'bank_name') ?> 

<?= $form->field($model, 'state') ?> 

<?= $form->field($model, 'district') ?> 

<?= $form->field($model, 'city') ?> 

<?= 
$form->field($model, 'time')->widget(Slider::classname(), [ 
'pluginOptions'=>[ 
'min'=>0, 
'max'=>20, 
'step'=>1 
] 
]); 
?> 

<?php // echo $form->field($model, 'branch') ?> 

<div class="form-group"> 
    <?= Html::submitButton(Yii::t('app', 'Search'), ['class' => 'btn btn-primary']) ?> 
    <?= Html::resetButton(Yii::t('app', 'Reset'), ['class' => 'btn btn-default']) ?> 
</div> 

<?php ActiveForm::end(); ?> 
**如何我已經註冊js文件** registerJs($此 - >渲染( 'searchJs.php')); ?>

searchJs.php

$('#banksearch-time').on('slideStop', function(){ 
alert('hello'); 
     var form = $(this); 
     if(form.find('.has-error').length) { 
      return false; 
     } 

     $.ajax({ 
      url: form.attr('action'), 
      type: 'post', 
      data: form.serialize(), 
      success: function(response) { 
       var csrf = yii.getCsrfToken(); 
       var bank_name = $('#banksearch-bank_name').val(); 
       var state = $('#banksearch-state').val(); 
       var district = $('#banksearch-district').val(); 
       var city = $('#banksearch-city').val(); 
       var time = $('#banksearch-time').val(); 
       var url = 'index'+ '&_csrf='+csrf+'&BankSearch[bank_name]='+bank_name+'&BankSearch[state]='+state+'&BankSearch[district]='+district 
          +'&BankSearch[city]='+city +'&BankSearch[time]='+time; 
       $.pjax.reload({url: url, container:'#Pjax_bank_id'}); 

      } 
     });  
    }).on('submit', function(e){ 
    e.preventDefault(); 
}); 

回答

0

解決問題是我沒有在GridView中分配的ID來Pjax。
<?php yii\widgets\Pjax::begin(['id' => 'gridresult']) ?>

我分配了Pjax ID爲_search .php
我改變來源:$.pjax.reload({url: url, container:'#gridresult'});
TO:$.pjax.reload({url: url, container:'#gridresult'});

0

好,你解決了這個問題。這是另一種方法。有人可能會有所幫助:

$url = \Yii::$app->getUrlManager()->createUrl('bank/index'); 

<?= $form->field($model, 'time')->widget(Slider::classname(), [ 
     'pluginOptions'=>[ 
      'min'=>0, 
      'max'=>20, 
      'step'=>1 
     ], 
     'pluginEvents' => [ 
      "slideStop" => "function() { refreshGridview($(this).val())}", 
     ] 
    ]); ?> 


$js1 = <<<JS 
     function refreshGridview(value) 
     { 
      $.ajax({ 
       url: "$url", 
       type: 'post', 
       data: { "BankSearch[id]": value, }, 
       success: function(response) { 
        var csrf = yii.getCsrfToken(); 
        var bank_id = value; 
        $.pjax.reload({ 
         url: "$url", 
         method: 'POST', 
         data: { 
           _csrf: csrf, 
           "BankSearch[id]": value, 
         }, 
         container:'#bank' 
        }); 
       } 
      });  
     } 
JS; 
$this->registerJs($js1); 

slidestop插件事件調用自定義函數與滑塊的當前值,然後通過Pjax更新GridView的。

+0

你好chinmay我怎樣才能執行搜索多個模型使用我的例子,這是由你suggessted。 – 2015-03-26 10:37:27

+0

對不起,我不明白。爲了搜索多個模型,您可以使用關係。 – Chinmay 2015-03-26 11:04:26

+0

我已經完成了在多個表中搜索。謝謝chinmay – 2015-03-27 09:43:01