簡體   English   中英

Sonata Admin:添加自定義觸發器/操作以列出/編輯操作

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM