我有Symfony网站上描述的嵌入式控制器。 http://symfony.com/doc/current/templating/embedding_controllers.html
唯一的区别是我的控制器有表格。全部都正确呈现,但提交表单后,请求始终为空。由于请求为空,$ form-> isValid()和$ form-> isSubmitted()始终返回false。
请在下面找到我的代码:
嫩枝:
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
控制器:
public function myEmbeddedAction(Request $request)
{
$template ="myTwig.html.twig";
$supportTicket = new SupportTicket();
$form = $this->createForm('AppBundle\Form\SupportTicketType', $supportTicket);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// success
}
return $this->render($template, array(
'supportTicket' => $supportTicket,
'form' => $form->createView()
));
}
将控制器嵌入我的布局:
{{ render(controller('AppBundle:Default:myEmbedded')) }}
嵌入式操作的请求始终具有相同的值:
{ “属性”:{}, “请求”:{}, “查询”:{}, “服务器”:{}, “文件”:{}, “饼干”:{}, “报头”: {}}
但是,如果我直接通过URL访问嵌入式控制器并填写表单,则可以正常工作。如何让表单在我的嵌入式控制器中工作?
答案 0 :(得分:2)
只是为了咧嘴笑试试
$request = $this->get('request_stack')->getMasterRequest();
使用嵌入式控制器时,实际上会收到子请求。我原本以为子请求仍然具有主请求属性,但我猜不是。