yii2 - 在模态 window 中使用带有 gridview 的 pjax
yii2 - use pjax with a gridview inside a modal window
我正在尝试在模态对话框中使用 gridView,但是当我在其中搜索某些内容(过滤)时,所有页面都会刷新,显然模态会关闭。
我需要什么才能让它正常工作?
我的代码:
查看
use yii\widgets\Pjax;
<?php
Modal::begin([
'id' => 'modal',
'header' => '<h2>Students</h2>',
'toggleButton' => ['label' => 'Show Students'],
]);
Pjax::begin();
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'student_code',
'name',
'grade',
],
]);
Pjax::end();
Modal::end();
?>
控制器
public function actionDetail($id)
{
$model = $this->findModel($id);
$searchModel = new DatosBasicosSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('detail', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
}
我在官方页面上搜索了文档和教程,找到了很多相关的帖子,但我无法解决问题。
感谢您的帮助。
尝试将 pjax 配置添加到 GridView
'pjax' => true,
'pjaxSettings'=>[
'options'=>[
'enablePushState'=>false,
],
],
并为您的 GridView 呈现和触发过滤器创建一个单独的操作...和 configure filterUrl。
问题是Pjax的begin()方法的配置问题,正确的做法是:
查看代码:
use yii\widgets\Pjax;
<?php
Modal::begin([
'id' => 'modal',
'header' => '<h2>Students</h2>',
'toggleButton' => ['label' => 'Show Students'],
]);
Pjax::begin([
'id'=>'pjax-students-gridview',
'timeout' => false,
'enablePushState' => false,
]);
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'student_code',
'name',
'grade',
],
]);
Pjax::end();
Modal::end();
?>
控制器代码相同,没有问题。
感谢vityapro带我走上正轨
我正在尝试在模态对话框中使用 gridView,但是当我在其中搜索某些内容(过滤)时,所有页面都会刷新,显然模态会关闭。 我需要什么才能让它正常工作?
我的代码:
查看
use yii\widgets\Pjax;
<?php
Modal::begin([
'id' => 'modal',
'header' => '<h2>Students</h2>',
'toggleButton' => ['label' => 'Show Students'],
]);
Pjax::begin();
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'student_code',
'name',
'grade',
],
]);
Pjax::end();
Modal::end();
?>
控制器
public function actionDetail($id)
{
$model = $this->findModel($id);
$searchModel = new DatosBasicosSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('detail', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
}
我在官方页面上搜索了文档和教程,找到了很多相关的帖子,但我无法解决问题。
感谢您的帮助。
尝试将 pjax 配置添加到 GridView
'pjax' => true,
'pjaxSettings'=>[
'options'=>[
'enablePushState'=>false,
],
],
并为您的 GridView 呈现和触发过滤器创建一个单独的操作...和 configure filterUrl。
问题是Pjax的begin()方法的配置问题,正确的做法是:
查看代码:
use yii\widgets\Pjax;
<?php
Modal::begin([
'id' => 'modal',
'header' => '<h2>Students</h2>',
'toggleButton' => ['label' => 'Show Students'],
]);
Pjax::begin([
'id'=>'pjax-students-gridview',
'timeout' => false,
'enablePushState' => false,
]);
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'student_code',
'name',
'grade',
],
]);
Pjax::end();
Modal::end();
?>
控制器代码相同,没有问题。
感谢vityapro带我走上正轨