/** * {@inheritdoc} */ public function render(GridViewInterface $grid, ColumnInterface $column, $sorting) { $definition = $grid->getDefinition(); $name = $column->getName(); if (!$definition->hasSort($name)) { return; } $sort = $sorting === SorterInterface::ASC ? $name : '-' . $name; $routeParameters = []; if (($request = $this->requestStack->getMasterRequest()) !== null) { $routeParameters = array_merge($request->attributes->get('_route_params', []), $request->query->all()); } if (!isset($routeParameters['grid']['reset']) && isset($routeParameters['grid']['sorting']) && $routeParameters['grid']['sorting'] === $sort) { return; } if ($definition->hasOption('persistent') && $definition->getOption('persistent')) { $filters = $this->filterManager->get($definition); if (isset($filters['sorting']) && $filters['sorting'] === $sort) { return; } } $routeParameters['grid']['sorting'] = $sort; unset($routeParameters['grid']['reset']); return $this->urlGenerator->generate($definition->getOption('grid_route'), $routeParameters); }
/** * {@inheritdoc} */ public function render(GridViewInterface $grid, ColumnInterface $column, $data) { $types = $this->resolveTypes($column->getType()); if (!isset($this->cache[$hash = spl_object_hash($grid) . ':' . spl_object_hash($column)])) { $resolver = new OptionsResolver(); foreach ($types as $type) { $type->configureOptions($resolver); } $this->cache[$hash] = $resolver->resolve(array_merge(['column' => $column, 'grid' => $grid], $column->getOptions())); } return reset($types)->render($data, $this->cache[$hash]); }