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

Lig*_*art 1 php symfony twig

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

枝条:

<a href='{{ path('groupitem_new',{'entity' : entity}) }}'>Link Name</a>
Run Code Online (Sandbox Code Playgroud)

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

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

sep*_*ehr 5

你不能.

pathurltwig中的函数用于生成不调用控制器操作的URL.

你应该用一个带有{%render%}标签的twig嵌入一个控制器,如下所示:

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

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

{# app/Resources/views/base.html.twig #}
{% render 'AcmeBlogBundle:Blog:show' with { 'entity': entity } %}
Run Code Online (Sandbox Code Playgroud)

在其中调用'AcmeBlogBu​​ndle:Blog:show' logical controller name.

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

// src/Acme/BlogBundle/Controller/BlogController.php
.
public function showAction(){
    .
    .
    .
    return new Response();
}
.
Run Code Online (Sandbox Code Playgroud)

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