【发布时间】:2016-12-31 08:14:53
【问题描述】:
我想在奏鸣曲管理中保存页面时添加“快速发布”功能 - 此功能需要锁定给某些具有正确“角色”或“权限”的个人。
我最初尝试更改基本模板以添加表单按钮并在 PageAdmin postUpdate/postPersist 函数中完成所有操作,但觉得这有点太混乱了。
我现在已经研究过使用 AdminExtension - 这样做意味着从表单中删除按钮,因为我真的不想为这一更改覆盖模板。为此,我添加了一个 configureFormFields 函数:
public function configureFormFields(FormMapper $formMapper)
{
$formMapper->with('Options')
->add('quickPublish', 'checkbox', [
'label' => 'Quick Publish',
'required' => false,
'help' => 'Checking this will automatically publish the changes'
])
->end();
}
然后我在这里添加了我的 postPersist 和 postUpdate 函数,它们将进行必要的更新。
public function postPersist(AdminInterface $admin, $object)
{
if ($object->getQuickPublish()) {
$this->quickPublish($object);
}
}
我面临的问题是我只希望这个管理员扩展程序基于安全角色运行,而不是一直运行。
在 postPersist 和 postUpdate 中这不是问题,因为我可以使用 $admin->isGranted('QUICK_PUBLISH) 但在 configureFormFields 函数中我无法使用 $admin。
我找不到为管理扩展设置安全性的方法,有人知道这是如何工作的吗?我正在使用奏鸣曲 2.x
谢谢 凯文
【问题讨论】:
标签: php symfony sonata-admin