2012-05-24 19 views
8

Su questo page ho trovato come aggiungere route per la mia azione personalizzata.azione personalizzata in SonataAdminBundle

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

Dopo di che aggiungo un'azione personalizzata nella mia classe di amministrazione:

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' 
       ) 
      ) 
     )) 
    ; 
} 

ha generato un URL simile a questo:

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

mio modello per questo link:

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

Non so come risolvere questo problema SME:

  1. Come definire controllo personalizzato per quel passaggio percorso? Ora ho un errore:

    Metodo "Sonata \ AdminBundle \ Controller \ CRUDController :: ispremiumAction" non esiste.

  2. Posso modificare l'url generato con il metodo generateUrl?

risposta

30

Quando si crea un servizio per EntityAdmin classe il terzo argomento è il nome del controller. È possibile creare una classe che estenda CRUDController e impostarla in servizio. per esempio

Il controller,

//Vendor\YourBundle\Controller\EntityAdminController.php 

class EntityAdminController extends CRUDController 
{ 
    public function ispremiumAction() 
    { 
     //process 
    } 
} 

In services.yml,

entity.admin.service: 
    class: FQCN\Of\EntityAdmin 
    tags: 
    - { name: sonata.admin, manager_type: orm, group: your_group, label: Label } 
    arguments: [null, FQCN\Of\Entity, VendorYourBundle:EntityAdmin] 
+3

Grazie un sacco! Post scriptum Sono noob in symfony 2.0 e ho appena scoperto che posso anche impostare _controller in $ collection-> add method –

Problemi correlati