2016-04-17 6 views
0

Ich erstelle Filter Formular für meine Daten mit Datenanbieter und Suchmodell und ein Problem, wenn meine Filterparameter in URL kopieren, wenn ich mehr als einmal auf Senden Schaltfläche klicken.Filter kopieren Parameter in URL

Modell ApartmentsSearchsearch Methode:

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; 
} 

-Controller actionIndex Methode:

public function actionIndex() 
{ 
    $searchModel = new ApartmentsSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->get()); 

    return $this->render('index', [ 
     'dataProvider' => $dataProvider, 
     'searchModel' => $searchModel, 
    ]); 
} 

View mit Listview widget:

<?= $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', 
     ], 
]); ?> 

Und _filter.php Ansicht mit Form: So

<?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(); ?> 

, wenn ich Eingabe einer beliebigen Anzahl in Feld und klicken Sie auf Absenden Ich sehe url wie folgt aus:

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

Wenn ich zweites Mal klicken Ich sehe url mit kopierten Parameter:

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

ich nicht kopieren Parameter in url will, muss ich Wert eines Parameters ändern.

Können Sie mir helfen?

Antwort

0

Gelöst.

in aktiver Form habe ich vergessen action Eigenschaft hinzufügen:

<?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(); ?>