【发布时间】:2013-03-22 11:31:12
【问题描述】:
当我将实体传递给 twig 文件时,我想将该实体传递回控制器并在数据库持久化之前重新渲染。 entity 是最初从控制器传递过来的变量。
树枝:
<a href='{{ path('groupitem_new',{'entity' : entity}) }}'>Link Name</a>
这不起作用。实体未通过。
如何通过 symfony 路由传递实体?
【问题讨论】:
当我将实体传递给 twig 文件时,我想将该实体传递回控制器并在数据库持久化之前重新渲染。 entity 是最初从控制器传递过来的变量。
树枝:
<a href='{{ path('groupitem_new',{'entity' : entity}) }}'>Link Name</a>
这不起作用。实体未通过。
如何通过 symfony 路由传递实体?
【问题讨论】:
你不能。
twig 中的path 和url 函数用于生成不调用控制器操作的 URL。
你应该改为 embedd a controller 在带有 {% render %} 标签的树枝中,如下所示:
{# app/Resources/views/base.html.twig #}
{% render url('some_route', { 'entity': entity }) %}
请注意,render 标签中的url 函数与用于生成 URl 的url 函数有些不同,这个函数用于调用控制器的动作,并在 symfony 2.0.20/2.1.5 版本中引入进行安全修复。旧的语法是这样的:
{# app/Resources/views/base.html.twig #}
{% render 'AcmeBlogBundle:Blog:show' with { 'entity': entity } %}
其中“AcmeBlogBundle:Blog:show”被称为logical controller name。
还请记住,至少您应该在控制器的操作中返回一个空响应:
// src/Acme/BlogBundle/Controller/BlogController.php
.
public function showAction(){
.
.
.
return new Response();
}
.
还将use Symfony\Component\HttpFoundation\Response; 添加到控制器文件的顶部。
【讨论】: