Php easy admin 3过滤器关联字段

Php easy admin 3过滤器关联字段,php,symfony,easyadmin,Php,Symfony,Easyadmin,我正在努力找到一个解决方案来过滤编辑视图中的关联字段列表 情况: 用户拥有允许供应商许多供应商 网站已启用供应商多个供应商 基于用户角色,我只想显示用户的允许供应商 是否可以过滤这些选项,以便用户看不到不允许的选项启用的供应商关联字段?这可以通过在configureFields中的字段上通过setFormTypeOptions更改选项来完成。 我在下面举了一个例子,检查用户角色是否不是ROLE\u ADMIN,如果不是,它将只显示允许的选择,这似乎正是我想要的方式 做了一些猜测和挖掘,因为文

我正在努力找到一个解决方案来过滤编辑视图中的关联字段列表

情况:

  • 用户
    拥有
    允许供应商
    许多供应商
  • 网站
    已启用供应商多个供应商
基于用户角色,我只想显示
用户
允许供应商


是否可以过滤这些选项,以便用户看不到不允许的选项
启用的供应商
关联字段?

这可以通过在configureFields中的字段上通过setFormTypeOptions更改选项来完成。 我在下面举了一个例子,检查用户角色是否不是
ROLE\u 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;
}

您能告诉我您是如何实现
entitymanager
-属性的吗?我尝试通过构造函数进行注入,但中的构造函数没有在我的CrudConteller上调用