public function isValid($value, array $parameters)
{
if (in_array($value, [null, ''])) {
return true;
}
$data = $parameters[0];
$field = $parameters[1];
$manyEntity = $data->getDefinition()->getSubTypeField($field, 'many', 'entity');
$validIds = array_keys($data->getIdToNameMap($manyEntity, null));
$candidateIds = array_column($value, 'id');
foreach ($candidateIds as $candidateId) {
if (!in_array($candidateId, $validIds)) {
return false;
}
}
return true;
}