Symfony 2-在部分视图中使用窗体,控制器的功能出现请求问题


Symfony 2 - using a form in partial view, controllers function issue with Request

我有一个局部视图,它在DVD页面上显示一个表单:

带表单的部分视图:

   <div>
         {{ form(form) }}
   </div>

在DVD页面中使用部分视图:

{{ render(controller(
      'DVDBundle:Actors:addActor',
      { 'dvdId': dvd.id }
)) }}

这个想法是管理员可以使用dvd页面上的表单(url:website/dvdpage)添加演员

然而:控制器Actors中的函数addActor似乎在Request中没有任何内容,因为它是通过部分视图使用的:

控制器功能:

 public function addActorAction(Request $request, $dvdId)
 {
   //form related code...
   ......
   ...
 }

当检查内部内容时:$request我得到:

_fragment?_path=_format%3Dhtml%26_locale%3Den%26_controller%3DDVDBundle%253AActors%253AaddActor

并且该错误被禁止访问403。此处:

 if (!$request->isMethodSafe()) {
        throw new AccessDeniedHttpException();
    }

奇怪的是,如果我通过url:website/addactor直接转到那个视图,那么同样的表单也能工作,并且Request在同一个控制器中具有正确的值。

我发现了这个:

当使用控制器而不是URL时,必须启用Symfony碎片配置:

在我的配置中添加了确切的行:fragments:{path:/_fragment}但仍然一无所获。

但不知道该怎么做,该做什么?有什么帮助吗?

是的,这对我来说很有效,将请求作为参数传递给控制器函数:

{{ render(controller(
      'DVDBundle:Actors:addActor',
      { 'dvdId': dvd.id, 'request': app.request }
)) }}

注意,您还需要更新路由以包括第二个参数,如:

add_actor:
  url:   addactor/{dvdId}-{request}
  ....