使用twig通过symfony路由将实体传递给控制器

时间:2013-03-22 01:48:07

标签: php symfony twig

当我将实体传递给twig文件时,我想将该实体传递回控制器并在数据库持久性之前重新渲染。 entity是最初从控制器传递的变量。

嫩枝:

<a href='{{ path('groupitem_new',{'entity' : entity}) }}'>Link Name</a>

这不起作用。该实体未通过。

如何通过symfony路线传递实体?

1 个答案:

答案 0 :(得分:5)

你做不到。

树枝中的

pathurl函数用于生成不调用控制器操作的URL。

您应该使用{%render%}标记代替embedd a controller,如下所示:

{# app/Resources/views/base.html.twig #}
{% render url('some_route', { 'entity': entity }) %}

请注意,render标记中的url函数与用于生成URl的url函数有某种不同,此函数用于调用控制器的操作,并在2.0.20 /的symfony中引入2.1.5安全修复版本。旧语法是这样的:

{# app/Resources/views/base.html.twig #}
{% render 'AcmeBlogBundle:Blog:show' with { 'entity': entity } %}

其中'AcmeBlogBu​​ndle:Blog:show'被称为logical controller name

还要记住,至少你应该在控制器的动作中返回一个空响应:

// src/Acme/BlogBundle/Controller/BlogController.php
.
public function showAction(){
    .
    .
    .
    return new Response();
}
.

还将use Symfony\Component\HttpFoundation\Response;添加到控制器文件的顶部。