【问题标题】:Disable conditionally main action's button in EasyAdmin3在 EasyAdmin 3 中禁用有条件的主要操作按钮
【发布时间】:2021-12-31 10:21:22
【问题描述】:

我知道如何显示带有条件的按钮,但如果用户具有某种状态,我想要完全禁用主要操作。
如果我的用户具有员工状态,则他不能创建或删除其他用户,否则他可以。
我尝试“显示是否”,但如果他破解了网址,他仍然可以执行此操作。

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)
            )
    }

有什么想法吗?

【问题讨论】:

    标签: php symfony easyadmin easyadmin3


    【解决方案1】:

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

    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);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2023-03-08
      相关资源
      最近更新 更多