I created a custom module that I consume an external api. I have also created a custom form (its action points to controller url) which filters the data. However, when I press the search button and the controller is loading, despite I get the right results immediately the controller is reloading and consequently I loose the filtered results.
How I can stop this behaviour?
This is my code so far:
public function submitForm(array &$form, FormStateInterface $form_state) {
$ada = $form_state->getValue('ada');
$sector = $form_state->getValue('sector');
$sub_sector = $form_state->getValue('sub_sector');
if ($sub_sector=='') {
$subject_unit=$sector;
} else {
$subject_unit=$sub_sector;
}
$datefrom = $form_state->getValue('datefrom');
$dateto = $form_state->getValue('dateto');
$params=[
'type'=>$subject_unit,
'datefrom'=>$datefrom,
'dateto'=>$dateto,
'freetext'=>$freetext,
'ada'=>$ada
];
}
controller:
class DiafaneiaController extends ControllerBase {
public $filters=[];
public function getList(Request $request) {
$filters = \Drupal::request()->request->all();
$data = array();
$response = $data = $result = null;
$page = pager_find_page()+1;
//echo 'pageNo:'.$page;
if (function_exists('diafaneia_reponse')) {
$response = diafaneia_reponse('https://diafaneia.hellenicparliament.gr/api.ashx?q=documents&pageSize=20&pageNo='.$page.'§or=0216896c-4d26-49de-b896-a2b600ab3843', 'GET',$filters);
}
if ($response) {
$result_docs = json_decode($response);
$data = array();
// # add all the data in one multiple dim array
$data['title'] = 'products to consume REST API';
$data['docs'] = $result_docs;
$num_per_page = 10;
$offset = $num_per_page * $page;
// Now that we have the total number of results, initialize the pager.
pager_default_initialize($result_docs->TotalRecords, $num_per_page);
$render = [];
$render[] = [
'#theme' => 'diafaneia_list',
'#data' => $data,
'#type' => 'remote',
];
$render[] = ['#type' => 'pager'];
}
return $render;
}