首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确设置menuIndex在EasyAdmin AdminUrlGenerator中?

如何正确设置menuIndex在EasyAdmin AdminUrlGenerator中?
EN

Stack Overflow用户
提问于 2022-02-12 19:26:53
回答 1查看 315关注 0票数 0

在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呢?

EN

回答 1

Stack Overflow用户

发布于 2022-02-12 19:26:53

我想给出一个可能的答案。但老实说,我不太喜欢我的解决方案。也许有人有更好的解决方案。

因此,我在DashboardController中迭代配置的menuIndex,并试图确定给定实体的menuIndex。

代码如下所示:

代码语言:javascript
复制
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时,我不会获取错误大小写。我的案子没问题。

也许这对某人有帮助。如果有人有更好的解决办法,我很乐意在这里谈这件事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71095148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档