EasyAdmin 3 - 为控制器中的重定向生成 URL(无杂物)

Posted

技术标签:

【中文标题】EasyAdmin 3 - 为控制器中的重定向生成 URL(无杂物)【英文标题】:EasyAdmin 3 - Generate URL for redirect in controller (no crud) 【发布时间】:2022-01-19 09:27:56 【问题描述】:

我已经用这个扩展制作了一个控制器(不是一个 crud):

class ScanController extends AbstractDashboardController

在这个控制器中,我有一个包含更多步骤的流程,并且我为每个步骤创建了一个操作:

    /**
     * @Route("/scan/step1", name="scan_step1")
     */
    public function step1(Request $request, EntityManagerInterface $entityManager): Response
    


    /**
     * @Route("/scan/step2/id_scan", name="scan_step2")
     */
    public function step2(int $id_scan, Request $request, EntityManagerInterface $entityManager): Response
    

在我的仪表板菜单配置中,我在第一步中添加了一个菜单:

MenuItem::linktoRoute('Scan', 'fa fa-barcode', 'scan_step1'),

Step1的网址是:

https://xxx/admin?menuIndex=2&routeName=scan_step1&signature=WeCEAS5-LhXL1Zy50HTVPuFjUpDKc7K0vdBLUY-T45E&submenuIndex=1

这没关系,但是现在,当我在第 1 步完成后,我想将客户重定向到第 2 步,并且我使用了简单的“redirectToRoute”功能:

    return $this->redirectToRoute('scan_step2', [
        'id_scan'=>$scan->getId(),
    ]);

但是当页面打开时,我没有任何菜单了......我在模板中,但在easyadmin“世界”“之外” 现在的网址是:

https://xxxx/scan/step2/14

我确定我需要通过带有 easyadmin 功能的重定向 URL 生成,但我找不到这样做的方法:-( 是 AdminUrlGenerator 还是别的什么?

【问题讨论】:

【参考方案1】:

我找到了解决办法。 首先我使用 EasyAdminController 进行扩展:

class ScanController extends EasyAdminController
  

对于重定向:

    $url = $this->adminUrlGenerator
    ->setRoute('scan_step2',[
        'id_scan'=>$scan->getId(),
    ])
    ->generateUrl();

    return $this->redirect($url);

现在一切都很好。

【讨论】:

以上是关于EasyAdmin 3 - 为控制器中的重定向生成 URL(无杂物)的主要内容,如果未能解决你的问题,请参考以下文章

Playframework 中 HTTPS 协议中的重定向控制器方法

在 EasyAdmin 3 中使用预填充值重定向到新操作

Google OAUTH:请求中的重定向URI与注册的重定向URI不匹配

功能测试 EasyAdmin 3 后端

shell中的重定向(输入输出)

在 spring 控制器的重定向中将请求方法从 POST 更改为 GET