我在symfony2中有关于formbuilder的简单问题
我正在制作一页中有两个表格的页面。
$form1 = $this->createFormBuilder()
->add('date1')
->add('save', 'submit', array('label' => 'date1 INPUT!'))
->getForm();
$form2 = $this->createFormBuilder()
->add('date2')
->add('save', 'submit', array('label' => 'date2 INPUT!'))
->getForm();
return $this->render('AcmeMemberBundle:Default:formExample.html.twig',
array('form' => $form->createView(),'form2' => $form2->createView()));
然后开始上课
public function receiveAction(Request $request){
$receiveForm = $this->createFormBuilder($myClass)
$receiveForm->handleRequest($request);
if ($receiveForm->isValid()) {
//how can I tell this $request data is form1 or form2???
}
}
我正在使用sumfony 2.3.19
请给我一些好主意!!感谢您的回复, 我认为我的第一个问题并不好。 我重新编写代码。 form1具有coorspondant类的形式。 form2没有coorspondant类。
public function tPortalAction(Request $request){
$scheTeacher = new ScheTeacher();
$form1 = $this->createFormBuilder($scheTeacher)
->add('date1')
->add('save1','submit', array('label'=>'date1 INPUT!'))
->getForm();
$form2 = $this->createFormBuilder()
->add('date2')
->add('save2','submit', array('label'=>'date2 INPUT!')) -
->getForm();
$form3 = $this->createFormBuilder()->getForm();
$form3->handleRequest($request);
if ($form3->isValid()) {
if ($form3->get('save1')->isClicked()) {
// form 1
echo("form1 clicked!");break;
} elseif ($form3->get('save2')->isClicked()) {
// form 2
echo("form2 clicked!");break;
}
}
}
使用此代码 没有任何反应。
答案 0 :(得分:2)
假设用户只点击一个表单的提交,您可以查看点击的内容 (这仅适用于Symfony> = 2.3 )
将表单更改为类似的内容;
$form1 = $this->createFormBuilder()
->add('date1')
->add('save1', 'submit', array('label' => 'date1 INPUT!'))
->getForm();
$form2 = $this->createFormBuilder()
->add('date2')
->add('save2', 'submit', array('label' => 'date2 INPUT!'))
->getForm();
然后在检查时尝试:
if ($form->get('save1')->isClicked()) {
// form 1
} elseif ($form->get('save2')->isClicked()) {
// form 2
}
根据问题更新进行编辑:
这是未经测试的,但应该有效;
public function tPortalAction(Request $request){
$scheTeacher = new ScheTeacher();
$form1 = $this->get('form.factory')->createNamedBuilder('myform1', 'form', $scheTeacher, array())
->add('date1')
->getForm();
$form2 = $this->get('form.factory')->createNamedBuilder('myform2', 'form', null, array())
->add('date1')
->getForm();
if('POST' === $request->getMethod()) {
if ($request->request->has('myform1') {
// handle the first form
}
if ($request->request->has('myform2') {
// handle the second form
}
// etc
}
}