筛选URL中的复制参数



我使用数据提供程序和搜索模型为我的数据创建筛选表单,当我多次单击提交按钮时,我的筛选参数在url中复制时,出现了问题。

模型的ApartmentsSearchsearch方法:

public function search($params)
{
    $query = Apartments::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
    if (!($this->load($params) && $this->validate())) {
        return $dataProvider;
    }
    $query->andFilterWhere([
        'rooms' => $this->rooms,
    ]);
    return $dataProvider;
}

控制器actionIndex方法:

public function actionIndex()
{
    $searchModel = new ApartmentsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->get());
    return $this->render('index', [
        'dataProvider' => $dataProvider,
        'searchModel' => $searchModel,
    ]);
}

使用ListView小部件查看:

<?= $this->render('_filter', ['searchModel' => $searchModel]); ?>
<?= ListView::widget([
        'dataProvider' => $dataProvider,
        'itemView' => '_list',
        'options' => [
            'tag' => 'div',
            'class' => 'apartments-list',
        ],
        'layout' => '{summary}{items}{pager}',
        'summary' => 'Показано квартири: <b>{begin}-{end}</b> з <b>{totalCount}</b>.',
        'summaryOptions' => [
            'tag' => 'div',
            'class' => 'summary',
        ],
        'itemOptions' => [
            'tag' => 'div',
            'class' => 'apartment-item',
        ],
]); ?>

_filter.php视图,格式为:

<?php $form = ActiveForm::begin([
    'method' => 'get',
]); ?>
<?= $form->field($searchModel, 'rooms') ?>
<div class="form-group">
    <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
    <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
</div>
<?php ActiveForm::end(); ?>

所以,当我在字段中输入任何数字并点击提交时,我会看到这样的url:

http://localhost/?ApartmentsSearch[rooms]=2

当我第二次点击时,我看到了带有复制参数的url:

http://localhost/?ApartmentsSearch[rooms]=2&ApartmentsSearch[rooms]=2

我不想在url中复制参数,我需要更改任何参数的值。

你能帮我吗?

已解决。

在活动形式中,我忘记添加action属性:

<?php $form = ActiveForm::begin([
    'action' => ['index'],
    'method' => 'get',
]); ?>
<?= $form->field($searchModel, 'rooms') ?>
<div class="form-group">
    <?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
    <?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
</div>
<?php ActiveForm::end(); ?>

最新更新