我知道如何显示按钮的条件,但我想要的是完全禁用的主要行动,如果用户有一种类型的状态。
如果我的用户具有员工的身份,那么他就不能创建或删除其他用户,否则他就可以。
我试过“显示如果”,但如果他黑了网址,他仍然可以做这个动作。
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)
)
}知道吗?
发布于 2021-12-31 10:36:48
我的做法不一样。我用我的条件创建了一个私有函数,并在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);
}
}https://stackoverflow.com/questions/70541272
复制相似问题