Controller is loading twice after search form is submitted
It's unclear how both pieces of code are connected with each other.
If you are handling the form values in form submit you need to pass the resulting parameters to the controller:
public function submitForm(array &amp;$form, FormStateInterface $form_state) {
  // prepare $params
  $form_state-&gt;setRedirect('route_to_controller', [], ['query' =&gt; $params]);
}

If you are pointing the form action to the controller
$form['#action'] = Url::fromRoute('route_to_controller')-&gt;toString();
$form['#method'] = 'get';

then there is no form submit and you have to process the submitted values in the controller.