我正在尝试创建一个简单的搜索表单(它将很快变得更复杂,所以我在这里使用ActiveForm而不是简单地将GET参数传递给action方法).
控制器:
public function actionIndex()
{
$search_form = new UserSearchForm();
$search_form->load(Yii::$app->request->get(), $formName = '');
return $this->render('index', [
'search_form' => $search_form
]);
}
Run Code Online (Sandbox Code Playgroud)
视图:
<?php $form = ActiveForm::begin(['id' => 'search-form', 'method' => 'get']); ?>
<?= $form->field($search_form, 'q')->textInput(['name' => 'q']) ?>
<?= Html::submitButton('Search') ?>
<?php ActiveForm::end(); ?>
Run Code Online (Sandbox Code Playgroud)
我在控制器中使用$ formName =''和'name'=>'q'以使查询字符串更清晰(简单q而不是UserSearchForm [q]).
在第一次提交之前,一切都很好.我在表单中看到隐藏的q字段,在第二次提交后,URL看起来像/ user?q = value1&q = value2,每个提交都会向隐藏字段添加另一个q.有没有一个好方法摆脱那些隐藏的领域?或许整个方法都错了?我想我无论如何都需要隐藏的字段(排序,分页等).
您应该只设置表单操作(如果为空它将是当前URL):
<?php $form = ActiveForm::begin([
'id' => 'search-form',
'method' => 'get',
'action' => ['controller/index']
]); ?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3748 次 |
| 最近记录: |