首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在EasyAdmin3中禁用有条件的主动作按钮

在EasyAdmin3中禁用有条件的主动作按钮
EN

Stack Overflow用户
提问于 2021-12-31 10:21:22
回答 1查看 414关注 0票数 0

我知道如何显示按钮的条件,但我想要的是完全禁用的主要行动,如果用户有一种类型的状态。

如果我的用户具有员工的身份,那么他就不能创建或删除其他用户,否则他就可以。

我试过“显示如果”,但如果他黑了网址,他仍然可以做这个动作。

代码语言:javascript
复制
public function configureActions(Actions $actions): Actions
    {
      
        return $actions
            //Here I would like to add my condition
            ->disable(Action::DETAIL, Action::EDIT)
            // I tried this but this is not secure, he can hacks the url
            ->update(Crud::PAGE_INDEX, Action::NEW, fn (Action $action) => $action->setIcon('fa fa-plus')
                ->setLabel('admin.crud.user.button.add_contractor')
                ->displayIf(fn () => $user->getStatus() !== self::EMPLOYEE)
            )
    }

知道吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-31 10:36:48

我的做法不一样。我用我的条件创建了一个私有函数,并在configureActions中调用了它:

代码语言:javascript
复制
public function configureActions(Actions $actions): Actions
    {
        $this->disableActions($actions);

        return $actions
            //->disable(Action::DETAIL, Action::EDIT)
            ->update(Crud::PAGE_INDEX, Action::NEW, fn (Action $action) => $action->setIcon('fa fa-plus')
                ->setLabel('admin.crud.user.button.add_contractor')
            )

            ->update(Crud::PAGE_INDEX, Action::DELETE, fn (Action $action) => $action->setLabel('admin.crud.user.button.delete_profile')
                ->setIcon('fa fa-times')
            )
            ;
    }

    private function disableActions(Actions $actions): void
    {
        $contractor  = $this->getUser();

        $actions->disable(Action::DETAIL, Action::EDIT);

        if ($contractor->getStatus() === self::EMPLOYEE) {
            $actions->disable(Action::DELETE, Action::NEW);
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70541272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档