[英]symfony3 embedded controller with form
我有一個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訪問嵌入式控制器並填寫表格,則它可以工作。 如何使該表單在嵌入式控制器內部運行?
只為咧嘴笑
$request = $this->get('request_stack')->getMasterRequest();
使用嵌入式控制器時,您實際上會收到一個子請求。 我本以為子請求仍將具有主請求屬性,但我想沒有。
更新時間:2019-09-16
雖然上面的代碼在從AbstractController擴展時仍然可以使用,但是使用注入更加符合Symfony的精神:
public function myEmbeddedAction(RequestStack $requestStack)
{
$request = $requestStack->getMasterRequest();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.