在自定义页面中创建自定义路由

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

我正在使用 Symfony 4.3 和 Sonata 3.x 版本。

我正在尝试在自定义页面中创建自定义路由,但收到错误:

An exception has been thrown during the rendering of a template ("unable to find the route `admin.photocall|admin.photocall_gallery.moderate`")

我有一个实体 X 与 Y 实体具有 OneToMany 关系。 用代码解释:

class XAdmin extends AbstractAdmin
{  
    [...]
    protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null)
    {
        $admin = $this->isChild() ? $this->getParent() : $this;
        $id = $admin->getRequest()->get('id');

        if ($this->isGranted('LIST')) {
            $menu->addChild('Galerie', [
                'uri' => $admin->generateUrl('admin.photocall_gallery.list', ['id' => $id])
            ]);
        }
    }
}

然后是我的 YAdmin :

class YAdmin extends AbstractAdmin
{
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper->add('_action', null, [
            'actions' => [
                'clone' => [
                    'template' => 'admin/PhotocallListAdmin/__list_action_moderate.html.twig'
                ]
            ]
        ])
        ;
    }

    protected function configureRoutes(RouteCollection $collection)
    {
        if ($this->isChild()) {
            $collection->clearExcept(['list', 'moderate']);
            $collection->add($collection->getBaseCodeRoute().'.moderate', 'moderate');
            return;
        }
    }
}

因此,我添加了一个带有模板的操作,如下所示:

<a class="btn btn-sm" href="{{ admin.generateObjectUrl('moderate', object) }}">
{% if not object.ismoderate %}
    Moderate
{% else %}
    Undo moderation
{% endif%}
</a>

所以错误表明它无法找到路由 admin.photocall|admin.photocall_gallery.moderate。但是当我在添加中等路线后将 $collection 转储到 YAdmin 中时,我有两个元素:

  • admin.photocall|admin.photocall_gallery.list(当前页面)

  • admin.photocall|admin.photocall_gallery.moderate

我搜索过,但好像没有其他人这样做过。

php symfony sonata-admin sonata
1个回答
0
投票

我写 Gaska 的评论来结束这个问题。

我只需添加:

$collection->add('moderate', 'moderate');
,然后清除缓存

谢谢他

© www.soinside.com 2019 - 2024. All rights reserved.