在 easy admin 中添加自定义操作

Add custom action in easy admin

我创建了一个允许接受实体的新操作。问题是所有实体都显示接受操作按钮,但我只希望它显示未接受的实体而不是已接受的实体。 已接受的实体的状态为 1 ,其他实体的状态为 0

这是我的配置操作方法 public function configureActions(Actions $actions): 动作 {

    $accept_Deal = Action::new('accept','accept')
        ->linkToCrudAction('acceptAction');
       

    return $actions
        ->add(Crud::PAGE_INDEX, $accept_Deal)
        ->disable( Action::NEW, Action::EDIT)
        ->add(Crud::PAGE_INDEX, Action::DETAIL)
        ->reorder(Crud::PAGE_INDEX, [Action::DETAIL, Action::DELETE]);
}

还有我的 accept Action 方法

public function acceptAction(AdminContext $context){
    $id     = $context->getRequest()->query->get('entityId');
    $entity = $this->getDoctrine()->getRepository(Deal::class)->find($id);
    $entity->setStatus(1);
    $this->getDoctrine()->getManager()->persist($entity);
    $this->getDoctrine()->getManager()->flush();
    return $this->redirect($this->get(CrudUrlGenerator::class)->build()->setAction(Action::INDEX)->generateUrl());

}

我在文档中找到了解决方案,我不知道我是怎么错过的

public 函数 configureActions(Actions $actions): Actions {

    $accept_Deal = Action::new('accept','accept')
        ->linkToCrudAction('acceptAction')
        ->displayIf(static function ($entity) {
        return $entity->getStatus() == 0 ;
    });

    return $actions
        ->add(Crud::PAGE_INDEX, $accept_Deal)
        ->disable( Action::NEW, Action::EDIT)
        ->add(Crud::PAGE_INDEX, Action::DETAIL)
        ->reorder(Crud::PAGE_INDEX, [Action::DETAIL, Action::DELETE]);
}