2012-07-14 81 views
10

我正在使用管理我的應用程序中的實體。該網站的管理員可以添加視頻,其中一些首先需要得到他們的發言者的批准。有一個授權系統已經開始工作 - 我有工作代碼,它將生成一個特殊的鏈接並通知發言者,他可以批准或不贊成視頻,並自動通知管理員。奏鳴曲管理員:添加自定義觸發器/動作列表/編輯動作

我想定製我的管理部分,因此視頻旁邊會出現一個按鈕ask for authorization。我可以讓它在列表動作(/admin/acme/videos/list)或編輯行動在右側導航(/admin/acme/videos/x/edit/

什麼是最好的方法來做到這一點?該文檔對塊定製很少,但我發現這可能是我正在尋找的東西,但我無法弄清楚如何使用它。

一個選項是使用preUpdate掛鉤,並向編輯操作添加複選框,但按鈕會更好。

回答

26

要爲編輯表單

添加到您的管理類添加一個動作:

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

相關問題