Symfony 6 URL重定向实现及EasyAdmin依赖注入错误求助
Symfony 6 + EasyAdmin 后台重定向及类找不到错误修复
错误原因
- 类名拼写错误:你把
AdminUrlGenerator写成了AdminUrlGeneretor(最后一位是or,不是etor) - 缺少正确命名空间:
AdminUrlGenerator是EasyAdminBundle自带的工具类,不属于你项目的App\Controller\Admin命名空间,必须手动引入
修复步骤
- 修正构造函数里的类名拼写,把
AdminUrlGeneretor改成AdminUrlGenerator - 在文件顶部添加EasyAdmin的
AdminUrlGenerator引入语句 - 确保你的
ProductCrudController也被正确引入(如果还没加的话)
修复后的完整代码
<?php namespace App\Controller\Admin; use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard; use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController; use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator; // 引入正确的类 use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use App\Controller\Admin\ProductCrudController; // 引入你的产品CRUD控制器 class DashboardController extends AbstractDashboardController { public function __construct( private AdminUrlGenerator $adminUrlGenerator // 修正拼写 ){} #[Route('/admin', name: 'admin')] public function index(): Response { $url = $this->adminUrlGenerator ->setController(ProductCrudController::class) ->generateUrl(); return $this->redirect($url); } public function configureDashboard(): Dashboard { return Dashboard::new() ->setTitle('Bonito'); } public function configureMenuItems(): iterable { yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home'); // 可选:添加产品管理菜单 yield MenuItem::linkToCrud('Products', 'fas fa-list', ProductCrudController::class); } }
简化写法(无需构造函数注入)
如果不想用构造函数注入依赖,也可以直接在方法里通过服务容器获取:
#[Route('/admin', name: 'admin')] public function index(): Response { $adminUrlGenerator = $this->get(AdminUrlGenerator::class); $url = $adminUrlGenerator->setController(ProductCrudController::class)->generateUrl(); return $this->redirect($url); }
这样可以省去构造函数的代码,更简洁。
内容的提问来源于stack exchange,提问作者bonito
相关产品推荐
相关产品推荐

