【发布时间】:2020-07-25 22:10:43
【问题描述】:
我是 Yii2 的新手, 我试图在提交表单后“调用”我的 gridview。好的,我得到了我的网格视图。但是当我想更改页面时,它会重新加载。我的问题是,如果我想查看 gridview 的下一页,我必须再次提交表单。我想要的只是更改页面而不刷新我的主页。我应该怎么办?我在哪里做错了?请没有 pjax,但如果它不可能,那也没关系。我会很高兴看到这个问题的解决方案!
我的模特:
public function search($params)
{
$query = Person::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 5,
],
]);
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
$query->andFilterWhere(['like', 'name', $this->full_name])
->andFilterWhere(['like', 'age', $this->age]);
return $dataProvider;
我的控制器:
$model = new Person();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$searchModel = new Person();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('persons', [
'model' => $model,
'dataProvider' => $dataProvider,
]);
}
return $this->render('person_search', [
'model' => $model,
]);
在 person_search.php - 带有过滤器的主表单:
<div class="search">
<?php $form = ActiveForm::begin([
'method' => 'post'
]) ?>
<?php
echo $form->field($data, 'name')->textInput();
echo $form->field($data, 'age')->textInput();
?>
</div>
<?= Html::submitButton('search'); ?>
<?php $form = ActiveForm::end() ?>
在 persons.php - 我为过滤器和我的网格视图呈现该表单,这里是:
<div class="card">
<?php echo $this->render('_search', ['model' => $model]); ?>
<div class="gridview">
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'name',
'age',
]); ?>
</div>
</div>
【问题讨论】:
-
你可以使用 Ajax 吗?
-
我不知道如何
-
@MagnusEriksson 我不知道该怎么做:(
-
从 google 开始“Ajax 入门”并浏览众多教程中的一些。
标签: php gridview pagination yii2 pjax