benutzerdefinierte Aktion in SonataAdminBundle

DaraufSeite Ich habe herausgefunden, wie ich eine Route für meine benutzerdefinierte Aktion hinzufügen kann.

protected function configureRoutes(RouteCollection $collection) {
    $collection->add('ispremium', $this->getRouterIdParameter().'/ispremium'); 
}

Danach füge ich in meiner Admin-Klasse eine benutzerdefinierte Aktion hinzu:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('code', null, array('label' => 'Code'))
        ->add('_action', 'actions', array( 
            'actions' => array(  
                'ispremium' => array(
                    'template' => 'AppMyBundleBundle:Admin:ispremium.html.twig'
                )
            )
        ))
    ;
}

Es erzeugte URL wie folgt:

/app_dev.php/admin/mobispot/discodes/discode/300876/ispremium

Meine Vorlage für diesen Link:

<a href="{{ admin.generateObjectUrl('ispremium', object) }}">Link</a>

Ich weiß nicht, wie ich diese Probleme lösen soll:

Wie definiere ich einen benutzerdefinierten Controller für diesen Routendurchlauf? Jetzt habe ich einen Fehler:

Die Methode "Sonata \ AdminBundle \ Controller \ CRUDController :: ispremiumAction" existiert nicht.

Kann ich die generierte URL mit der generateUrl-Methode ändern?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage