[英]Sonata Admin: Add custom triggers/actions to list/edit action
我正在使用SonataAdminBundle
来管理我的应用程序中的实体。 该网站的管理员可以添加视频,其中一些首先需要由他们的扬声器批准。 已经有一个授权系统正在运行 - 我有一个工作代码,它将生成一个特殊链接,并通知可以批准或拒绝视频的发言人,并自动通知管理员。
我想自定义我的管理部分,因此在视频旁边会有一个按钮ask for authorization
。 我可以在列表操作( /admin/acme/videos/list
)或右侧导航中的某个编辑操作中使用它( /admin/acme/videos/x/edit/
)
这样做的最佳方法是什么? 文档对块自定义说的很少,但我发现这个例子可能是我正在寻找的东西,但我无法弄清楚如何使用它。
一个选项是使用preUpdate
挂钩,并为编辑操作添加一个复选框,但按钮会更好。
为编辑表单添加操作
添加到您的管理类:
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') }}" alt="{% trans from 'SonataAdminBundle' %}action_delete{% endtrans %}" />
</a>
所有示例均来自您提供的链接。 希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.