Это можно сделать, изменив варианты с помощью setFormTypeOptions в поле в configureFields. Я привел пример ниже, который проверяет, не соответствует ли роли пользователя ROLE_ADMIN
, если нет, он будет показывать только разрешенные варианты, похоже, это работает именно так, как я хочу.
Потребовалось немного догадок и копаем, так как это не было четко объяснено в документации.
public function configureFields(string $pageName): iterable
{
$fields = [];
if (array_search('ROLE_ADMIN', $this->getUser()->getRoles()) === false) {
/** @var User|null $user */
$user = $this->entityManager->getRepository(User::class)->findOneBy([
'username' => $this->getUser()->getUsername()
]);
if ($user) {
$fields[] = AssociationField::new('suppliers')->onlyOnForms()->setFormTypeOptions([
"choices" => $user->getEnabledSuppliers()->toArray()
]);
}
} else {
$fields[] = AssociationField::new('suppliers')->onlyOnForms();
}
return $fields;
}