【发布时间】:2017-05-26 14:43:44
【问题描述】:
我遇到了以下问题。我在一页上有 3 个表格(将来可能会更多)。当我提交它们时.. 没有任何反应(在数据库中插入数据),其他 2 个表单填写了它们的字段。可能是因为它们都有一个“名称”字段?我该如何解决这个问题.. 使每个表单都有自己的“功能”,并且不会干扰其他表单。
我的树枝:
<div class="box">
<h2>Form1</h2>
{{ form_start(form1) }}
{{ form_widget(form1) }}
{{ form_end(form1) }}
</div>
<div class="box">
<h2>Form2</h2>
{{ form_start(form2) }}
{{ form_widget(form2) }}
{{ form_end(form2) }}
</div>
<div class="box">
<h2>Form3</h2>
{{ form_start(form3) }}
{{ form_widget(form3) }}
{{ form_end(form3) }}
</div>
我的控制器:
if ($request->isMethod('POST')) {
$form1->handleRequest($request);
$form2->handleRequest($request);
$form3->handleRequest($request);
if ($form1->isSubmitted() && $form1->isValid() && $request->request->has('form1')) {
// Do data insert
//Return to page
} else if ($form2->isSubmitted() && $form2->isValid() && $request->request->has('form2')) {
// Do data insert
//Return to page
} else if ($form3->isSubmitted() && $form3->isValid() && $request->request->has('form2')) {
// Do data insert
//Return to page
}
}
【问题讨论】:
-
你不需要这个
$request->request->has('form1'),因为你已经有了$form1->isSubmitted()。还要检查提交的表单是否有效,它们可能只是没有验证。 -
是否有理由用相同的方法处理所有三个表单?我做了类似的事情,在一个页面上有 3 个表单,但每个表单都有自己的控制器方法。
-
This 可能会有所帮助。
-
如果您有多个表单指向同一个控制器/方法,这意味着您只需要一个具有不同提交按钮的表单并检查单击了哪个按钮。
-
删除
$request->request->has('form1'确实有助于其他形式的值开始。 form1 完美提交,但是当我尝试提交其他 2.. 他们似乎指向第一个表单。他们试图在那个查询中插入他们的数据——这当然不行。