Sonata Admin:添加自定义触发器/动作到列表/编辑动作
Posted
技术标签:
【中文标题】Sonata Admin:添加自定义触发器/动作到列表/编辑动作【英文标题】:Sonata Admin: Add custom triggers/actions to list/edit action 【发布时间】:2012-07-14 00:54:09 【问题描述】:我正在使用SonataAdminBundle
来管理我的应用程序中的实体。该网站的管理员可以添加视频,其中一些首先需要得到演讲者的批准。已经有一个授权系统在运行 - 我有一个工作代码,它将生成一个特殊链接并通知演讲者,演讲者可以批准或不批准视频,并自动通知管理员。
我想自定义我的管理部分,所以视频旁边会有一个按钮ask for authorization
。我可以在列表操作(/admin/acme/videos/list
)或右侧导航(/admin/acme/videos/x/edit/
)某处的编辑操作中使用它
最好的方法是什么?文档中关于块自定义的内容很少,但我发现 this example 可能是我正在寻找的东西,但我不知道如何使用它。
一种选择是使用preUpdate
挂钩,并在编辑操作中添加一个复选框,但按钮会更好。
【问题讨论】:
【参考方案1】:为编辑表单添加操作
添加到您的管理类:
protected function configureSideMenu(MenuItemInterface $menu, $action, Admin $childAdmin = null)
if (!$childAdmin && !in_array($action, array('edit')))
return;
$admin = $this->isChild() ? $this->getParent() : $this;
$id = $admin->getRequest()->get('id');
$menu->addChild('My action', array('uri' => 'http://google.com?id=' . $id));
它将为 /admin/acme/videos/x/edit/ 等操作创建左侧菜单。拥有当前项目的 ID 允许您构建任何自定义 URL。
为列表添加动作: 在您的管理文件中添加
protected function configureListFields(ListMapper $listMapper)
$listMapper
->add('_action', 'actions', array(
'actions' => array(
'act' => array('template' => 'AcmeBundle:Video:my_temp.html.twig'),
)
))
;
它将添加一个带有链接的列,然后您需要为您的列创建一个模板,例如
<a href=" admin.generateObjectUrl('delete', object) " class="delete_link" title="% trans from 'SonataAdminBundle' %action_delete% endtrans %">
<img src=" asset('bundles/sonataadmin/famfamfam/delete.png') " />
</a>
所有示例均取自您提供的链接。希望对你有帮助
【讨论】:
configureSideMenu
已弃用。请改用configureTabMenu
。以上是关于Sonata Admin:添加自定义触发器/动作到列表/编辑动作的主要内容,如果未能解决你的问题,请参考以下文章