【问题标题】:easy admin 3 filter AssociationFieldeasy admin 3 过滤器关联字段
【发布时间】:2020-11-26 15:27:03
【问题描述】:

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

情况:

  • User 有 allowedSuppliers ManyToMany 到 Supplier
  • Website 有 enabledSuppliers ManyToMany 到 Supplier

根据用户角色,我只想显示Supplier 中的User 的allowedSuppliers 的选择

是否可以过滤这些让用户看不到非允许选项enabledSuppliers 关联字段?

【问题讨论】:

    标签: php symfony easyadmin


    【解决方案1】:

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

    【讨论】:

    • 您能告诉我您是如何实现enitityManager-Property 的吗?我尝试通过构造函数进行注入,但没有在我的 CrudContoller 上调用构造函数。
    猜你喜欢
    • 2021-09-12
    • 2017-01-31
    • 2023-03-23
    • 2020-04-13
    • 2017-12-24
    • 2021-07-04
    • 2022-12-14
    • 2021-01-07
    • 2021-12-27
    相关资源
    最近更新 更多