表单页面后的表单页面

时间:2014-04-03 09:05:06

标签: php forms symfony

我的symfony 2项目中有关使用表单的问题(没有类的表单)。我们的想法是开发一系列表单(每个表单都在一个独立的页面中)。类似于多步骤表单或向导但完全不一样。在每种形式中,保存部分发送结果并调用新表单。

目前我有一个控制器,其形式如下:

public function form1Action(Request $request, $parameter){

 //Get relevant data using the $parameter...

 $defaultData = array('message' => 'Type your message here');
 $formBuilder = $this->createFormBuilder($defaultData);
 $formBuilder->add('sendreport', 'choice', array(
                          'choices'   => array('yes' => 'Yes', 'no' => 'No'),
                          'expanded' => true,
                          'label' => 'You will receive a full report from administrator',
                          'multiple' => false,      
                       ));

    $formBuilder->add('start', 'submit', array('label' => 'form.labels.start'));

    $form = $formBuilder->getForm();

    $form->handleRequest($request);

    if ($request->getMethod() == 'POST') {

       if ($form->isSubmitted() && $form->isValid()){

          $data = $form->getData();

          return $this->redirect($this->generateUrl('task_form2', array('data' => $data)));

    }     

    return $this->render('MyBundle:Default:showform1.html.twig', array('ourform' => $form->createView()));

}

然后,重定向的页面包含一个与前一个结构类似的新表单:

public function form2Action(Request $request, $data){

    $datasource = $data;
    $defaultData = array('message' => 'Type your message here');
    $formBuilder = $this->createFormBuilder($defaultData)
        ->add('name', 'text')
        ->add('email', 'text')
        ->add('message', 'textarea')
        ->add('send', 'submit');

    $form = $formBuilder->getForm(); 


    $form->handleRequest($request);

  //WHY IS NOT SUBMMITED???

    if ($request->getMethod() == 'POST') {

        if ($form->isSubmitted() /*&& $form2->isValid()*/) {

           $data2 = $form->getData();

           $data = //$data = $data2 array + $datasource array...

          return $this->redirect($this->generateUrl('task_form3'), array('data' => $data));
    }
}

return $this->render('MyBundle:Default:showform2.html.twig', array('ourform' => $form->createView()));

}

但问题是,'task_form2'路径中调用的第二种形式未提交!¿?按下发送按钮时没有任何反应!。

有什么想法吗? 做这个的最好方式是什么? (我认为它更简单,我不想使用multistep bundle或类似的东西)。

提前谢谢。

0 个答案:

没有答案