[英]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.