我试图在Symfony2中的单个控制器中使用两种形式。该页面显示一个电子邮件地址列表,其中包含用于选择它们的复选框。
第一个表单是研究表单,第二个表单用于删除电子邮件地址。我的页面中也有一个分页。
我的问题是,当第一页中没有显示电子邮件地址时,我无法通过研究删除电子邮件地址。
public function emailsAction(Request $request, $paginationParams)
{
$searchForm = $this->createForm(new SearchFormType(), null, array());
$searchForm->handleRequest($request);
if ($searchForm->isValid()) {
// FETCH E-MAILS WITH SEARCH
} else{
// FETCH E-MAILS WITHOUT SEARCH
}
// here I slice the result depending on the pagination params
$removeForm = $this->createForm(new RemoveFormType(), null, array(
'emails' => $emails
));
$removeForm->handleRequest($request);
if ($removeForm->isValid())
{
$formData = $removeForm->getData();
// here I remove the e-mails
}
...
$params['remove_form'] = $manageSubscribersForm->createView();
$params['search_form'] = $searchAbonneActuForm->createView();
return $this->renderView('my_template.html.twig', $params);
}
如果我理解正确,问题是我的removeForm是使用拼接数组创建的,并且在处理removeForm时没有应用搜索。
当我搜索一个名字时,请说johnsmith,它会在第1页显示我,其中一个结果是johnsmith@email.com。
如果johnsmith@email.com在第2页没有搜索,则处理我的请求的removeForm是使用不包含johnsmith的拼接数组创建的,因此removeForm不被视为有效。
如何创建我的removeForm,考虑到提交removeForm之前完成的搜索?或者我可能做错了吗?
我不是母语为英语的人,所以如果有什么不清楚,请随时提问。
答案 0 :(得分:1)
您可以使用包含当前页面索引的隐藏字段,这将有助于您再次进行搜索。
或者您可以使用事件侦听器在提交验证之前修改表单字段。