繁体   English   中英

symfony twig 中的渲染控制器动作

[英]rendering controller action in symfony twig

更新不推荐使用的代码,我有以下渲染标签问题

> {% render url('_internal_main_navigation', {}) %}

转换为

{{ render(controller('MyBundle::menu', {})) }}

Twig 会在将“Controller”和“Action”附加到指定路由的地方执行此操作,因此应该调用MyBundle/Controller/Controller->menuAction()但显然 Controller 类应该具有某种前缀,例如“MyController”,因此可以像'Bundle:My:menu'一样指定树枝路线,否则我会得到

“MyBundle”类不存在

我可以在不为控制器添加前缀的情况下使其工作吗?

我建议使用render_esi() ,它也支持通过url()名称的路由,并且您将来会为 ESI 设置。

当使用默认的 render() 函数(或将渲染器设置为内联)时,Symfony 在向客户端发送响应之前将包含的页面内容合并到主页面内容中。 但是如果你使用 esi 渲染器(即调用 render_esi())并且如果 Symfony 检测到它正在与支持 ESI 的网关缓存通信,它会生成一个 ESI 包含标签。 但是如果没有网关缓存或者它不支持 ESI,Symfony 只会将包含的页面内容合并到主页面中,就像使用 render() 时所做的那样。

请参阅在 Symfony 中使用 ESI

以下语法适用于您的情况:

{{ render_esi(url('_internal_main_navigation', {})) }}

如果您想通过控制器名称呈现,您可以将您的控制器变成一个服务并通过服务名称(即mybundle_controller )来引用它:

{{ render_esi(controller('mybundle_controller:menuAction', {})) }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM