2012-07-30 22 views
8

Como sabe, el paquete de administración de sonata viene con tres botones en la página de edición que son "Agregar nuevo, actualizar y eliminar". Me puede quitar botón de borrar con esto:Agregue el botón personalizado para editar la página del paquete de administración de sonata

protected function configureRoutes(RouteCollection $collection) 
{ 
    $collection 
     ->remove('delete') 
    ; 

} 

Pero quiero también añadir "Enviar mensaje al usuario" botón en la edición de UserAdmin. ¿Cómo puedo hacer esto? No puedo encontrar ninguna documentación sobre eso en los documentos de sonata.

Respuesta

14

Debe indicar el parámetro si el archivo está en otro espacio de nombres, y el método add() debería funcionar, pero luego debe sobrescribir la plantilla CRUD de Sonata para poder mostrar otro botón/enlace.
Además, puede definir el controlador y la acción a los que se llamará.

Por ejemplo:
src/Acme/DemoBundle/Admin/EntityAdmin.php:

protected function configureRoutes(\Sonata\AdminBundle\Route\RouteCollection $collection) 
{ 
    $collection 
     ->add('dummy', 
      'dummy/{id}', 
      array('_controller' => 'AcmeDemoBundle:Default:dummy'), 
      array('id' => '\d+') 
     ) 
    ; 
} 

src/Acme/HelloBundle/Controlador/DefaultController.php:

/** 
    @Route("/dummy/{id}", name="dummy", 
     requirements={"id" = "\d+"} 
    ) 
    @Template("AcmeDemoBundle:Default:dummy.html.twig") 
*/ 
public function dummyAction($id) 
{ 
    return(array(
     'id' => $id 
    )); 
} 

app/Recursos /SonataAdminBundle/views/CRUD/base_edit_form.html.twig:

{% block form %} 
    ... 
    {% else %} 
     ... 
     {% block formactions %} 
      ... 
      {% else %} 
       ... 
       {% if admin.id(object) %} 
        ... 
        {% if admin.hasroute('dummy') %} 
         <a class="btn" target="_blank" href="{{ admin.generateObjectUrl('dummy', object) }}">{% trans from 'SonataAdminBundle' %}link_dummy{% endtrans %}</a> 
        {% endif %} 
        ... 
+0

es posible hacer t lo mismo para los administradores integrados? – GBRocks

+0

¿no podemos anular la "aplicación/Resources/SonataAdminBundle/views/CRUD/base_edit_form.html.twig" para evitar el cambio de los archivos originales de sonata? – Lionel

+1

@Lionel al colocar los archivos en la aplicación/Recursos los anulas :) – wtfzdotnet

Cuestiones relacionadas