11

SonataAdminBundleアプリケーションでエンティティを管理するために使用しています。サイトの管理者はビデオを追加できますが、その一部は最初にスピーカーの承認を受ける必要があります。既に動作している承認システムがあります。特別なリンクを生成し、ビデオを承認または不承認にするスピーカーに通知し、管理者に自動的に通知する作業コードがあります。

管理セクションをカスタマイズしたいのでask for authorization、動画の横にボタンを表示します。リスト アクション ( /admin/acme/videos/list) または右ナビゲーションのどこかの編集アクション( /admin/acme/videos/x/edit/)のいずれかで問題ありません

これを行うための最良のアプローチは何ですか? ドキュメンテーションにはブロックのカスタマイズについてほとんど書かれていませんが、私が探しているものかもしれないこの例を見つけましたが、その使用方法がわかりませんでした。

1 つのオプションは、preUpdateフックを使用して編集アクションにチェックボックスを追加することですが、ボタンの方がはるかに優れています。

4

1 に答える 1

27

編集フォームのアクションを追加するには

管理クラスに追加します。

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>

すべての例は、あなたが提供したリンクから取られています。それが役に立てば幸い

于 2012-07-19T07:36:58.990 に答える