2012-07-30 54 views
8

如您所知,奏鳴曲管理軟件包在編輯頁面有三個按鈕,分別是「添加新的,更新和刪除」。我可以刪除刪除按鈕:添加自定義按鈕來編輯奏鳴曲管理軟件包的頁面

protected function configureRoutes(RouteCollection $collection) 
{ 
    $collection 
     ->remove('delete') 
    ; 

} 

但我想在編輯UserAdmin時添加「發送消息給用戶」按鈕。我怎樣才能做到這一點?我無法在奏鳴曲文檔中找到任何相關文檔。

回答

14

如果文件位於其他命名空間中,並且add()方法應該可以工作,則應該提示該參數,但是必須覆蓋Sonata的CRUD模板才能顯示其他按鈕/鏈接。
此外,您可以定義將被調用的控制器和操作。

例如:
SRC/Acme公司/ DemoBundle /管理/ EntityAdmin.php:

protected function configureRoutes(\Sonata\AdminBundle\Route\RouteCollection $collection) 
{ 
    $collection 
     ->add('dummy', 
      'dummy/{id}', 
      array('_controller' => 'AcmeDemoBundle:Default:dummy'), 
      array('id' => '\d+') 
     ) 
    ; 
} 

的src/Acme公司/ HelloBundle /控制器/ DefaultController.php:

/** 
    @Route("/dummy/{id}", name="dummy", 
     requirements={"id" = "\d+"} 
    ) 
    @Template("AcmeDemoBundle:Default:dummy.html.twig") 
*/ 
public function dummyAction($id) 
{ 
    return(array(
     'id' => $id 
    )); 
} 

應用程序/資源/SonataAdminBundle/views/CRUD/base_edit_form.html.twig:

{% block form %} 
    ... 
    {% else %} 
     ... 
     {% block formactions %} 
      ... 
      {% else %} 
       ... 
       {% if admin.id(object) %} 
        ... 
        {% if admin.hasroute('dummy') %} 
         <a class="btn" target="_blank" href="{{ admin.generateObjectUrl('dummy', object) }}">{% trans from 'SonataAdminBundle' %}link_dummy{% endtrans %}</a> 
        {% endif %} 
        ... 
+0

是否有可能做t他對嵌入式管理員也一樣嗎? – GBRocks 2013-09-24 08:33:38

+0

我們不能覆蓋「app/Resources/SonataAdminBundle/views/CRUD/base_edit_form.html.twig」以避免更改奏鳴曲的原始文件嗎? – Lionel 2014-10-09 09:29:42

+1

@Lionel通過將文件放在應用程序/資源中,您將覆蓋它們:) – wtfzdotnet 2015-10-05 08:13:07

相關問題