我有一个部分观点,即在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} 但仍然没有。
但不知道怎么做以及做什么?有什么帮助吗?
答案 0 :(得分:0)
所以是的,这对我有用,将请求作为参数传递给控制器函数:
{{ render(controller(
'DVDBundle:Actors:addActor',
{ 'dvdId': dvd.id, 'request': app.request }
)) }}
注意,您还需要更新路由以包含第二个参数,如下所示:
add_actor:
url: addactor/{dvdId}-{request}
....