urlGenerator = $URLGenerator; $this->accessor = $accessor; } /** * The normalize function is responsible for converting parsed and processed data to a datatables-appropriate type. * * @param mixed $value The single value of the column * @return mixed */ public function normalize($value) { /** @var NamedDBElement $value */ return $value; } public function configureOptions(OptionsResolver $resolver) { parent::configureOptions($resolver); $resolver->setRequired('property'); $resolver->setDefault('field', function (Options $option) { return $option['property'] . '.name'; }); $resolver->setDefault('render', function (Options $options) { return function ($value, Part $context) use ($options) { /** @var DBElement $entity */ $entity = $this->accessor->getValue($context, $options['property']); if ($entity) { if ($entity->getID() !== null) { return sprintf( '%s', $this->urlGenerator->listPartsURL($entity), $value ); } else { return sprintf('%s', $value); } } }; }); } }