2012-07-30 18 views
8

あなたが知っているように、ソナタ管理バンドルには、編集ページの「新規追加、更新、削除」という3つのボタンが付いています。ソナタ管理バンドルの編集ページにカスタムボタンを追加

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

} 

しかし、「UserAdmin」の編集で「メッセージを送信」ボタンも追加したいと思います。これどうやってするの?私はソナタのドキュメントでそれについてのドキュメントを見つけることができません。

答えて

14

ファイルが他の名前空間にあり、add()メソッドが機能するはずですが、ソナタのCRUDテンプレートを上書きして他のボタン/リンクを表示できるようにする必要があります。
また、呼び出されるコントローラとアクションを定義できます。例えば


のsrc /アクメ/ 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 /アクメ/ 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

組み込み管理者も同じですか? – GBRocks

+0

ソナタオリジナルファイルの変更を避けるため、「app/Resources/SonataAdminBundle/views/CRUD/base_edit_form.html.twig」を上書きすることはできませんか? – Lionel

+1

@Lionelあなたがそれらをオーバーライドしているapp/Resourcesにファイルを置くことによって:) – wtfzdotnet

関連する問題