/** * {@inheritDoc} */ public function visitDatasource(DatagridConfiguration $config, DatasourceInterface $datasource) { $filters = $this->getFiltersToApply($config); $values = $this->getValuesToApply($config); $datasourceAdapters = []; foreach ($datasource->getQueryBuilders() as $qb) { $datasourceAdapters[] = new OrmFilterDatasourceAdapter($qb); } foreach ($filters as $filter) { $value = isset($values[$filter->getName()]) ? $values[$filter->getName()] : false; if ($value === false) { continue; } $form = $filter->getForm(); if (!$form->isSubmitted()) { $form->submit($value); } if (!$form->isValid()) { continue; } foreach ($datasourceAdapters as $datasourceAdapter) { $filter->apply($datasourceAdapter, $form->getData()); } } }