#symfony #easyadmin
#symfony #easyadmin
Вопрос:
Есть ли какой-либо способ показать / скрыть действия на основе базового объекта? Например, мне нужно показать действие удаления объекта категории тогда и только тогда, когда у него нет дочерней записи.
Я пытался удалить это из configureActions
метода в моем CRUD-контроллере, но у меня нет доступа к AdminContext
объекту при вызове этого метода.
Как я могу это сделать?
Ответ №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;
}