我有一个嵌入式控制器,在Symfony的网站上有描述。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')) }}嵌入操作处的请求始终具有相同的值:
{“属性”:{},“请求”:{},“查询”:{},“服务器”:{},“文件”:{},“cookie”:{},“头”:{}
但是,如果我直接通过URL访问嵌入式控制器并填写表单,它就能工作。如何使表单在我的嵌入式控制器内工作?
发布于 2017-03-04 21:16:45
只是为了微笑,试试
$request = $this->get('request_stack')->getMasterRequest(); 当使用嵌入式控制器时,您实际上收到了一个子请求。我原以为子请求仍然具有主请求属性,但我想没有。
更新:2019年-09-16
虽然上面的代码在从AbstractController扩展时仍然有效,但使用注入更符合Symfony的精神:
public function myEmbeddedAction(RequestStack $requestStack)
{
$request = $requestStack->getMasterRequest();https://stackoverflow.com/questions/42600672
复制相似问题