奏鸣曲管理员:添加自定义触发器/动作列表/编辑动作

奏鸣曲管理员:添加自定义触发器/动作列表/编辑动作

问题描述:

我正在使用管理我的应用程序中的实体。该网站的管理员可以添加视频,其中一些首先需要得到他们的发言者的批准。有一个授权系统已经开始工作 - 我有工作代码,它将生成一个特殊的链接并通知发言者,他可以批准或不赞成视频,并自动通知管理员。奏鸣曲管理员:添加自定义触发器/动作列表/编辑动作

我想定制我的管理部分,因此视频旁边会出现一个按钮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)); 
} 

这将为像/管理/ ACME /视频/ X /编辑/动作左侧菜单。拥有当前项目的ID可让您构建任何自定义网址。

要添加列表中选择操作: 在您的管理文件中添加

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> 

所有示例均取自您提供的链接。希望它有帮助

+0

'configureSideMenu'已弃用。改用'configureTabMenu'。 – sergekv 2015-10-09 12:17:43