EasyaAmin 3-根据基础实体动态隐藏/显示动作

问题描述

有什么方法可以显示/隐藏基于基础实体的动作?例如,当且仅当类别实体没有任何子帖子时,我才需要显示该类别实体的删除动作。

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

我该怎么做?

解决方法

跟踪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;
    }