2014-12-15 1 views
2

Я пытаюсь создать Ajax GridView с помощью Pjax. Все работает отлично, за исключением того, что кнопки просмотра, обновления и удаления не являются AJAX. Код:Yii2 Pjax GridView кнопки действия

<?php yii\widgets\Pjax::begin(['id' => 'demo']); ?> 
<?= GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 

     'id', 
     'name', 


     ['class' => 'yii\grid\ActionColumn'], 
    ], 

]); ?> 
<?php yii\widgets\Pjax::end(); ?> 

Проблема заключается в том, что ссылки для удаления, просмотра и обновления имеют атрибут данных-pjax = 0, которая отключает функциональность AJAX. Я не могу узнать, как установить его также data-pjax = 1.

ответ

5

Вы должны сделать, как показано ниже:

Для Delete действий

1 Измените ваше действие удаления, как показано ниже:

public function actionDelete($id) { 
    $this->findModel($id)->delete(); 
    if (Yii::$app->getRequest()->isAjax) { 
     $dataProvider = new ActiveDataProvider([ 
      'query' => ModelName::find(), 
      'sort' => false 
     ]); 
     return $this->renderPartial('index', [ 
        'dataProvider' => $dataProvider 
     ]); 
    } 
    return $this->redirect(['index']); 
} 

2- По вашему мнению сетки:

['class' => 'yii\grid\ActionColumn', 
     'buttons' => [ 
      'delete' => function ($url, $model) { 
       return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ 
          'title' => Yii::t('yii', 'Delete'), 
          'data-pjax'=>'w0', 
       ]); 
      } 
     ] 
    ], 

Теперь он работает с Pjax.

Примечания

  • Мой код в deleteAction() может привести к снижению производительности. Вы можете написать свой собственный.
  • w0 обычно является идентификатором по умолчанию PJax. Вы можете добавить id к PJax и написать там вместо этого.
  • Это то же самое для Update и View, но вам нужно изменить способ отображения ваших update и view.
  • Это настоятельно рекомендуется, чтобы взглянуть на Yii2 «s официального PJax документа: http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html
+0

В операции удаления вы ничего не удалили? – user3658609

+0

он делает с $ this-> findModel ($ id) -> delete(); –

+0

привет, он дает мне ошибку 405 (метод не разрешен) – Bloodhound