无法在 SonataAdminBundle 模板中使用渲染(控制器)

Posted

技术标签:

【中文标题】无法在 SonataAdminBundle 模板中使用渲染(控制器)【英文标题】:Can't use render(controller) in SonataAdminBundle template 【发布时间】:2017-10-09 02:03:43 【问题描述】:

我创建自定义控制器(扩展 Sonata\AdminBundle\Controller\CRUDController)和操作。

渲染此动作时render(controller('MainBundle:SonataAdmin/Order:searchCertificate')) 我收到 Symfony 错误:

在渲染模板期间抛出异常(“没有为控制器MainBundle\Controller\SonataAdmin\OrderController和当前路由定义_sonata_admin”)。

【问题讨论】:

【参考方案1】:

我在官方documentation找到答案:

如果您想通过以下方式在模板中呈现自定义控制器操作 使用 twig 中的渲染功能,您需要将 _sonata_admin 添加为 属性。例如; 渲染(控制器('AppBundle:XxxxCRUD:评论','_sonata_admin': 'sonata.admin.xxxx' )) 。必须这样做,因为那一刻 渲染应该发生在路由中,这通常设置的值 这个参数,根本不涉及,然后会报错 “没有为控制器定义_sonata_admin AppBundleControllerXxxxCRUDController 和当前路由 ' '。"

【讨论】:

【参考方案2】:

我已经通过在 comming 请求中设置 _sonata_admin 解决了这个问题:

普通控制器:

$request->request->set('_sonata_admin','admin.template');

【讨论】:

以上是关于无法在 SonataAdminBundle 模板中使用渲染(控制器)的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用 symfony 5 安装 sonataAdminBundle

Sonata Admin Bundle - 自定义模板

Sonata Admin Bundle - 表单类型:sonata_type_collection - 自定义模板?

如何在 SonataAdminBundle 中使用角色

SonataAdminBundle 如何在列表视图中对列的值求和

SonataAdminBundle 如何获取当前的管理类?