4

Symfony2 アプリケーションで SonataAdminBundle を使用します。エンティティを編集するときに、右上隅にあるドロップダウン メニューに独自のアクションを追加したいのですが、これがどのように機能するのかわかりません。

configureRoutes(RouteCollection $collection)経由で独自のルートを追加し、バッチ アクションを追加する方法、またはリスト ビューのエンティティの背後に独自のアクションを追加する方法は知っていますが、編集ビューのアクション ドロップダウンに独自のリンクを追加するにはどうすればよいですか?

基本的には「フロントエンドでこのエンティティを表示してください」のような単なるリンクなので、大きなロジックは必要ありません。

4

3 に答える 3

0

もう 1 つの方法generateObjectUrl()は、オブジェクトの管理クラスでメソッドをオーバーライドすることです。

/**
 * @see \Sonata\AdminBundle\Admin\Admin::generateObjectUrl()
 */
public function generateObjectUrl($name, $object, array $parameters = array(), $absolute = false)
{
    if ('show' == $name) {
        return $this->getRouteGenerator()->generate('your_route_to_public_facing_view', [
            'id' => $this->getUrlsafeIdentifier($object),
        ], $absolute );
    }
    $parameters['id'] = $this->getUrlsafeIdentifier($object);
    return $this->generateUrl($name, $parameters, $absolute);
}

以上です。テンプレートをいじる必要はありません。また、他のすべての管理者で実行されるテンプレート コードはありません。

$showMapperリンクを自動的に表示するには、 viaに何かを追加する必要がありますconfigureShowFields()。(もっといい方法を知っている人がいたら教えてください。)

オーバーライドgenerateObjectUrl()にはもう 1 つの利点があります。showにボタンを表示する$listMapperと、そこの URL も更新されます。

言うように編集:これはshowルートをオーバーライドするため、その組み込み機能を使用できなくなります。すべてのフロントエンド css と js がロードされた状態でオブジェクトを表示する必要があるため、これで問題ありません。

于 2016-01-20T21:19:00.740 に答える