Добавить пользовательскую кнопку для редактирования страницы пакета Sonata admin

Как вы знаете, sonata admin bundle поставляется с тремя кнопками на странице редактирования, которые "Добавить новый, обновить и удалить". Я могу удалить кнопку "Удалить" с помощью этого:

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

}

но я также хочу добавить кнопку "Отправить сообщение пользователю" в правке UserAdmin. Как я могу это сделать? Я не могу найти никакой документации об этом в sonata docs.

1 ответов


вы должны указать параметр, если файл находится в другом пространстве имен, и метод add () должен работать, но тогда вам нужно перезаписать шаблон CRUD Сонаты, чтобы иметь возможность отображать другую кнопку/ссылку.
Кроме того, вы можете определить контроллер и действие, которое будет называться.

для пример:
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/контроллер / 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 / Resources / SonataAdminBundle/views/CRUD / base_edit_form.формат html.веточка:

{% 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 %}
                    ...