EasyAdmin 3 - 生成用于在控制器中重定向的 URL(无 CRUD)

问题描述 投票:0回答:2

我用这个扩展制作了一个控制器(不是杂物):

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'),

第 1 步的网址是:

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 还是其他东西以及如何实现?

symfony easyadmin3
2个回答
0
投票

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

class ScanController extends EasyAdminController
{  
}

以及重定向:

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

    return $this->redirect($url);

现在一切都很好。


0
投票

这是EasyAdmin 4的解决方案:

AdminUrlGenerator
 注入控制器 
EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator

AdminUrlGenerator $adminUrlGenerator

然后生成路由名称的 URL:

$url = $adminUrlGenerator->setRoute('my_route')->generateUrl()

然后您可以将其用于重定向:

return $this->redirect($url);
© www.soinside.com 2019 - 2024. All rights reserved.