添加自定义按钮以编辑奏鸣曲管理包的页面

时间:2012-07-30 16:20:03

标签: symfony sonata-admin

如您所知,sonata admin捆绑包在编辑页面中附带三个按钮,即"添加新的,更新和删除"。我可以删除删除按钮:

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

}

但我还要添加"向用户发送消息"用户管理编辑按钮。我怎样才能做到这一点?我无法在奏鸣曲文档中找到有关该文档的任何文档。

1 个答案:

答案 0 :(得分:14)

如果文件在其他命名空间中,你应该提示参数,并且add()方法应该有效,但是你必须覆盖Sonata的CRUD模板才能显示另一个按钮/链接。
此外,您可以定义将被调用的控制器和操作。

例如:
的src / Acme公司/ DemoBundle /管理/ 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
    ));
}

应用程序/资源/ SonataAdminBundle /视图/ 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 %}
                    ...