2012-07-14 18 views
10

私のアプリケーションのエンティティを管理するのにを使用しています。サイトの管理者は動画を追加することができ、その一部は最初にスピーカーから承認を受ける必要があります。既に働いている認証システムがあります - 私は特別なリンクを生成し、ビデオを承認または不承認とすることができるスピーカーに通知し、管理者に自動的に通知する作業コードを持っています。Sonata Admin:アクションを一覧表示/編集するカスタムトリガー/アクションを追加します

管理セクションをカスタマイズしたいので、ビデオの隣にボタンask for authorizationが表示されます。私は大丈夫です(/admin/acme/videos/list)または右のnav(/admin/acme/videos/x/edit/)のどこかの編集アクションで

これを行うには最適な方法は何ですか?ドキュメントはブロックのカスタマイズについてはほとんど言及していませんが、私が探しているものかもしれないthis exampleが見つかりましたが、使用方法を理解できませんでした。

1つの選択肢は、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を持つと、カスタムURLを作成できます。それは、あなたがあなたの列のテンプレートを作成する必要があり、リンクで

<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> 
のようなものを列を追加します

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->add('_action', 'actions', array(
      'actions' => array(
       'act' => array('template' => 'AcmeBundle:Video:my_temp.html.twig'), 
      ) 
     )) 
    ; 
} 

を追加するには、adminファイルで :リストのためのアクションを追加するには

すべての例は、あなたが提供したリンクから取られています。希望します。

+0

'configureSideMenu'は推奨されていません。代わりに 'configureTabMenu'を使用してください。 – sergekv

関連する問題