问题描述
有什么方法可以显示/隐藏基于基础实体的动作?例如,当且仅当类别实体没有任何子帖子时,我才需要显示该类别实体的删除动作。
我试图从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;
}