EasyaAmin 3 - динамическое скрытие / отображение действий в зависимости от базовой сущности

Есть ли способ показать / скрыть действия на основе базовой сущности? Например, мне нужно показать действие удаления объекта категории тогда и только тогда, когда у него нет дочерних постов.

Я попытался удалить это из метода configureActions в моем контроллере CRUD, но у меня нет доступа к объекту AdminContext, когда этот метод вызывается.

Как я могу это сделать?


person amirmodi    schedule 26.08.2020    source источник


Ответы (1)


После трассировки в базе кода 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;
    }
person amirmodi    schedule 26.08.2020