diff --git a/libraries/src/Form/Field/SqlField.php b/libraries/src/Form/Field/SqlField.php index f6a088324c08..8e56d3d3a6a5 100644 --- a/libraries/src/Form/Field/SqlField.php +++ b/libraries/src/Form/Field/SqlField.php @@ -233,12 +233,21 @@ protected function processQuery($conditions, $filters, $defaults) // Process the filters if (\is_array($filters)) { - $html_filters = Factory::getApplication()->getUserStateFromRequest($this->context . '.filter', 'filter', [], 'array'); + // @TODO: Loading the filtering value from the request need to be deprecated. + $html_filters = $this->context ? Factory::getApplication()->getUserStateFromRequest($this->context . '.filter', 'filter', [], 'array') : false; + $form = $this->form; foreach ($filters as $k => $value) { - if (!empty($html_filters[$value])) { + // Get the filter value from the linked filter field + $filterFieldValue = $form->getValue($value, $this->group); + + if ($html_filters && !empty($html_filters[$value])) { $escape = $db->quote($db->escape($html_filters[$value]), false); + $query->where("{$value} = {$escape}"); + } elseif ($filterFieldValue !== null) { + $escape = $db->quote($db->escape($filterFieldValue), false); + $query->where("{$value} = {$escape}"); } elseif (!empty($defaults[$value])) { $escape = $db->quote($db->escape($defaults[$value]), false);