SonataAdmin自定义表单动作

 书友76132462 发布于 2023-02-14 00:09

我正在使用SonataAdminBundle,我想知道如何在edit(类似的东西Save, Update and Close)中添加自定义表单操作

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

我正在尝试添加一个自定义输入字段,该字段将调用控制器或某些内容来更新值并发送电子邮件

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

谢谢

1 个回答
  • 您可以通过添加新路由来添加自定义表单操作.因为当您添加新路线时,您还需要添加操作来处理此路线.

    创建路线

    您可以通过在Admin类中定义新路由来注册新路由.只有管​​理员路线才能以这种方式注册.

    以这种方式定义的路由是在Admin的上下文中生成的,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');
        }
    }
    

    创建新操作所需的其他步骤

    除了为新操作定义路由之外,还需要在Controller中为其创建处理程序.默认情况下,Admin类使用SonataAdminBundle:CRUD作为其控制器,但可以通过在定义Admin Service时更改第三个参数(在admin.yml文件中)来更改.

    例如,让我们将MediaAdmin类的Controller更改为AcmeDemoBundle:MediaCRUD:

    # src/Acme/DemoBundle/Resources/config/admin.yml
    sonata.admin.media:
        class: Acme\DemoBundle\Admin\MediaAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, label: "Media" }
        arguments:
            - ~
            - Acme\DemoBundle\Entity\Page
            - 'AcmeDemoBundle:MediaCRUD' # define the new controller via the third argument
        calls:
            - [ setTranslationDomain, [Acme\DemoBundle]]
    

    我们现在需要创建我们的Controller,最简单的方法是扩展基本的Sonata CRUD控制器:

    use Sonata\AdminBundle\Controller\CRUDController;
    
    class MediaCRUDController extends CRUDController
    {
        public function myCustomAction()
        {
            // your code here ...
        }
    }
    

    在CRUD模板中,可以通过admin变量的generateUrl()命令生成当前Admin类的路由:

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

    只需覆盖您需要的模板并添加此自定义操作即可.

    2023-02-14 00:40 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有