在EasyAdmin for Symfony中,您可以使用AdminUrlGenerator轻松地生成URL,例如EasyAdmin CRUD控制器。
这里的文档:https://symfony.com/doc/current/EasyAdminBundle/crud.html#generating-admin-urls
在我的例子中,我想要生成一个指向CRUD控制器的URL,它也是在仪表板中链接的。如果我创建一个指向CRUD控制器的链接,则该链接可以工作,但相应的MenuItem不会突出显示。我发现,EasyAdmin通过调用menuIndex的URL参数突出显示MenuItem。我可以在链接生成期间取消menuIndex,但是菜单中没有突出显示menuItem。
我没有找到任何关于如何为生成的CRUD获取正确的menuIndex的信息。
那么,如何使用正确的menuIndex生成管理URL呢?
发布于 2022-02-12 19:26:53
我想给出一个可能的答案。但老实说,我不太喜欢我的解决方案。也许有人有更好的解决方案。
因此,我在DashboardController中迭代配置的menuIndex,并试图确定给定实体的menuIndex。
代码如下所示:
private function getIndexLinkForCrudController(string $controller): string
{
return $this->adminUrlGenerator
->unsetAll()
->setController($controller)
->setAction(Action::INDEX)
->set('menuIndex', $this->determineMenuIndexForEntity($controller::getEntityFqcn()))
->generateUrl();
}
private function determineMenuIndexForEntity(string $entity): ?int
{
$menuItems = $this->configureMenuItems();
foreach ($menuItems as $id => $menuItem) {
/* @var MenuItemInterface $menuItem */
$routeParameter = $menuItem->getAsDto()->getRouteParameters();
if (
is_array($routeParameter) &&
array_key_exists(EA::ENTITY_FQCN, $routeParameter) &&
$routeParameter[EA::ENTITY_FQCN] == $entity
) {
return $id;
}
}
return null;
}这个密码适用于我。但此代码仅在DashboardController中工作。如果我想在CRUD控制器中创建Admin,我需要将菜单配置移动到静态方法并在那里访问它。此外,当我无法确定menuIndex并返回null时,我不会获取错误大小写。我的案子没问题。
也许这对某人有帮助。如果有人有更好的解决办法,我很乐意在这里谈这件事。
https://stackoverflow.com/questions/71095148
复制相似问题