我有一个表单,它使用Gridview中的选定行作为表单输入。问题是,当我尝试搜索Gridview时,它会提交表单。我已经尝试将Gridview封装在Pjax中并检查控制器中的请求是否为isPjax。它似乎没有工作,也许我错过了一些东西。
我希望能够让用户在表单中搜索相关数据,选择它,从下拉列表中选择一个项目,然后提交表单。有什么建议吗?
这是我的观点:
<?php $form = ActiveForm::begin([]) ?>
<?php \yii\widgets\Pjax::begin() ?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
['class' => 'yii\grid\CheckboxColumn'], //to select rows for the form
'name',
[
'attribute' => 'manager.name',
'label' => 'Manager',
],
],
]); ?>
<?php \yii\widgets\Pjax::end() ?>
<?= $form->field($model, 'id_questionnaire')->dropDownList($questionnaireItems) ?>
<div class="form-group">
<?= Html::submitButton(Yii::t('app', 'Submit'), ['class' => 'btn btn-success btn-block']) ?>
</div>
<?php ActiveForm::end() ?>
在我的控制器中,我首先检查Pjax,但这不起作用:
if(Yii::$app->request->isPjax){
//search
}
if($model->load(Yii::$app->request->post())) {
if (Yii::$app->request->post('selection')) {
foreach (Yii::$app->request->post('selection') as $id) {
//save the model
}
}
return $this->redirect(['questionnaire/index']);
}