2016-02-01 37 views
2

好吧,我在Symfony2項目中遇到了Sonata Admin的一個相當基本的問題。如何在Sonata Admin中添加全局操作?

我有一個「產品」列表視圖,每個在我的網上商店出售的產品。在右上角的「操作」菜單中,我有默認操作,只有一個名爲「添加新」的操作。

List view in sonata admin

我只是想添加更多操作旁邊的「添加新的」:自定義操作,如「從所有產品中刪除促銷價格」,或者「刪除所有產品評價」。

我不想要一個「批處理」操作,我想要一個導致自定義數據庫查詢的「全局」操作。

我在文檔中找到的所有內容都與批量操作或「單行操作」有關。有沒有辦法做我想要的?

謝謝你的幫助!

回答

6

Create and configure a custom admin extension和覆蓋configureActionButtons(AdminInterface $admin, $list, $action, $object)方法來添加自定義操作:

use Sonata\AdminBundle\Admin\AdminExtension; 
use Sonata\AdminBundle\Admin\AdminInterface; 
use Sonata\AdminBundle\Route\RouteCollection; 

class CustomGlobalActionsExtension extends AdminExtension 
{ 
    public function configureActionButtons(AdminInterface $admin, $list, $action, $object) 
    { 
     return array_merge($list, [ 
      ['template' => 'admin/custom_action.html.twig'] 
     ]); 
    } 

    public function configureRoutes(AdminInterface $admin, RouteCollection $collection) 
    { 
     $collection->add('custom_action', $admin->getRouterIdParameter().'/custom_action'); 
    } 
} 
{# app/Resources/views/admin/custom_action.html.twig #} 
<a class="btn btn-sm" href="{{ admin.generateObjectUrl('custom_action', object) }}">Custom Action</a> 

參見https://sonata-project.org/bundles/admin/2-3/doc/cookbook/recipe_custom_action.html

+0

呀!謝謝Wouter! :) – wewereweb