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);
}
}
};
});
}
}