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

Posted

技术标签:

【中文标题】在自定义页面中创建自定义路由【英文标题】:Create a custom route in a custom page 【发布时间】:2019-09-03 01:38:26 【问题描述】:

我正在使用 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`")

我有一个与 Y 实体有 OneToMany 关系的实体 X。 代码说明:

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。但是当我在添加中等路由后在 YAdmin 中转储 $collection 时,我有两个元素:

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

admin.photocall|admin.photocall_gallery.moderate

我搜索过,但似乎没有其他人这样做。

感谢您的帮助

【问题讨论】:

试试这个$collection-&gt;add('moderate', 'moderate');,然后清除缓存。 哼我不知道为什么,但它的工作...也许清除缓存是提示,因为我已经尝试添加只是适度。谢谢加斯卡!你可以写一个回复,我会验证它:) 【参考方案1】:

我写加斯卡的评论来结束这个问题。

我只需要添加:

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

感谢他

【讨论】:

以上是关于在自定义页面中创建自定义路由的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vue.js中创建自定义链接组件?

如何根据 barplot 的值在 matplotlib 中创建自定义图例?

是否可以自定义注销页面或在 Wordpress 中创建自定义注销页面?

在 IIS 7 中创建自定义 503 页面

如何在 Django 中创建自定义 403 页面?

在 Lumen 中创建自定义错误页面