Symfony 2 - 在部分视图中使用表单,控制器功能问题请求

时间:2016-01-10 18:59:41

标签: php symfony twig

我有一个部分观点,即在DVD的页面上显示一个表单:

使用表单的部分视图:

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

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

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

我们的想法是管理员可以使用dvd页面上的表单添加演员(网址:website/dvdpage

但是:控制器addActor中的函数Actors似乎没有任何请求,因为它通过局部视图使用:

控制器功能:

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

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

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

并且错误被禁止访问403. here:

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

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

我发现了这个:

  

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

在我的配置中添加了确切的行:fragment:{path:/ _fragment} 但仍然没有。

但不知道怎么做以及做什么?有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

所以是的,这对我有用,将请求作为参数传递给控制器​​函数:

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

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

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