首页 > 解决方案 > EasyaAmin 3 - 根据底层实体动态隐藏/显示操作

问题描述

有没有办法根据基础实体显示/隐藏操作?例如,当且仅当它没有任何子帖子时,我才需要显示 Category 实体的删除操作。

我试图从我的 CRUD 控制器中的方法中删除它,但是在调用该方法时configureActions我无法访问该对象。AdminContext

我怎样才能做到这一点?

标签: symfonyeasyadmin

解决方案


在 EasyAdmin 的代码库中跟踪后,我找到了这个解决方案:

考虑我有一个与帖子有关的Category实体。如果该类别没有任何帖子,OneToMany我需要显示每个类别的操作。delete

    public function configureActions(Actions $actions): Actions
    {
        $action = parent::configureActions($actions)->getAsDto(Crud::PAGE_INDEX)->getAction(Crud::PAGE_INDEX, Action::DELETE);

        if (!\is_null($action)) {
            $action->setDisplayCallable(function (Category $category) {
                return $category->getPosts()->count() === 0;
            });   
        }

        return $actions;
    }

推荐阅读