/** * {@inheritdoc} */ public function sort(DataSourceBuilderInterface $builder, GridInterface $grid, array $sorting) { foreach ($sorting as $name => $order) { if (!$grid->hasSort($name) || !in_array($order, [self::ASC, self::DESC], true)) { continue; } $sort = $grid->getSort($name); $types = $this->resolveTypes($sort->getType()); $resolver = new OptionsResolver(); foreach ($types as $type) { $type->configureOptions($resolver); } reset($types)->sort($order, $resolver->resolve(array_merge(['builder' => $builder, 'grid' => $grid, 'sort' => $sort], $sort->getOptions()))); } }