我正在尝试使用Pjax创建Ajax GridView。一切都工作正常,除了视图,更新和删除按钮不是AJAX。代码是:
<?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(); ?>
问题是删除,查看和更新的链接具有属性data-pjax = 0,这会禁用AJAX功能。我无法找到如何设置它data-pjax = 1。
答案 0 :(得分:6)
你必须这样做:
删除操作
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
添加ID,然后将其写入。Update
和View
的情况相同,但您需要更改显示update
和view
观看次数的方式。Yii2
官方PJax文档:http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html