Symfony 6 EasyAdmin 4字段设置权限

h4cxqtbf  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(134)

我正在使用EasyAdmin 4(EA4),我想禁用基于同一实体上的值的字段。
例如,Reviewer可能与User关联,在这种情况下,我想禁用其他字段,如 name
所以我创建了一个Voter,它获取Reviewer并检查$reviewer->getUser() === null是否存在。
然而,我发现使用setPermission甚至不可能正确隐藏 name 字段,因为Voter得到的FieldDTO没有值。
所以,我很困惑。我怎么会有这种行为?

bf1o4zei

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

相关问题