Symfony SonataAdmin自定义表单操作

Symfony SonataAdmin自定义表单操作,symfony,sonata-admin,symfony-sonata,Symfony,Sonata Admin,Symfony Sonata,我正在使用SonataAdminBundle,我想知道如何在edit中添加自定义表单操作(类似于保存、更新和关闭) 似乎没有任何关于它的记录 我正在尝试添加一个自定义输入字段,它将调用控制器或其他东西来更新值并发送电子邮件 有没有关于如何做到这一点的文档或示例 谢谢您可以通过添加新路由来添加自定义表单操作。因为在添加新路由时,还需要添加操作来处理此路由 创建路线 您可以通过在管理类中定义新路由来注册它们。只有管理员路由应该以这种方式注册 以这种方式定义的路由是在管理员上下文中生成的,add()唯

我正在使用
SonataAdminBundle
,我想知道如何在
edit
中添加自定义表单操作(类似于
保存、更新和关闭

似乎没有任何关于它的记录

我正在尝试添加一个自定义输入字段,它将调用控制器或其他东西来更新值并发送电子邮件

有没有关于如何做到这一点的文档或示例


谢谢

您可以通过添加新路由来添加自定义表单操作。因为在添加新路由时,还需要添加操作来处理此路由

创建路线 您可以通过在管理类中定义新路由来注册它们。只有管理员路由应该以这种方式注册

以这种方式定义的路由是在管理员上下文中生成的,add()唯一需要的参数是操作名称。第二个参数可用于定义要附加到baseRoutePattern的URL格式,如果未明确设置,则默认为操作名称

<?php
use Sonata\AdminBundle\Route\RouteCollection;

class MediaAdmin extends Admin
{
        protected function configureRoutes(RouteCollection $collection)
    {
        $collection->add('myCustomAction');
        $collection->add('view', $this->getRouterIdParameter().'/view');
    }
}
我们现在需要创建控制器,最简单的方法是扩展基本的Sonata CRUD控制器:
use Sonata\AdminBundle\Controller\CRUDController;

class MediaCRUDController extends CRUDController
{
    public function myCustomAction()
    {
        // your code here ...
    }
}
在CRUD模板中,可以通过管理变量的generateUrl()命令生成当前管理类的路由:

<a href="{{ admin.generateUrl('list') }}">List</a>

<a href="{{ admin.generateUrl('list', params|merge('page': 1)) }}">List</a>


只需覆盖所需的模板并添加此自定义操作。

您好。谢谢你。但是我有一些问题,我按照你的例子,用我自己的订单部分更改媒体部分。我在路线上加了超链接。但我遇到的问题是,我遇到了一个错误:在呈现模板
(“找不到路由bm.orders.admin.orders.verify
请尝试这样编写路由:
工作得很好。尽管我必须更改和调整一些位才能工作。
<a href="{{ admin.generateUrl('list') }}">List</a>

<a href="{{ admin.generateUrl('list', params|merge('page': 1)) }}">List</a>