我正在使用EasyAdmin 4(EA4),我想禁用基于同一实体上的值的字段。例如,Reviewer可能与User关联,在这种情况下,我想禁用其他字段,如 name。所以我创建了一个Voter,它获取Reviewer并检查$reviewer->getUser() === null是否存在。然而,我发现使用setPermission甚至不可能正确隐藏 name 字段,因为Voter得到的FieldDTO没有值。所以,我很困惑。我怎么会有这种行为?
$reviewer->getUser() === null
setPermission
bf1o4zei1#
这是我迄今为止找到的解决方案(我希望有一个更好的):
public function createEditForm(EntityDto $entityDto, KeyValueStore $formOptions, AdminContext $context): FormInterface { if ($entityDto->getInstance()->getUser() !== null) { $entityDto->getFields()->getByProperty('name')->setFormTypeOption('disabled', true); $entityDto->getFields()->getByProperty('institution')->setFormTypeOption('disabled', true); $entityDto->getFields()->getByProperty('email')->setFormTypeOption('disabled', true); } return parent::createEditForm($entityDto, $formOptions, $context); }
1条答案
按热度按时间bf1o4zei1#
这是我迄今为止找到的解决方案(我希望有一个更好的):