Php Symfony 3-多个删除表单仅删除一条记录
我一直在做一个文件内联网。我尝试实现的最新功能是多重删除系统。当前,我在控制器中呈现未映射的窗体:Php Symfony 3-多个删除表单仅删除一条记录,php,jquery,forms,symfony,Php,Jquery,Forms,Symfony,我一直在做一个文件内联网。我尝试实现的最新功能是多重删除系统。当前,我在控制器中呈现未映射的窗体: public function mediaDatabaseAction(Request $request) { $media = $this->get('media_repository')->findAll(); $em = $this->getDoctrine()->getManager(); $form = $this->createFormBuilder()
public function mediaDatabaseAction(Request $request)
{
$media = $this->get('media_repository')->findAll();
$em = $this->getDoctrine()->getManager();
$form = $this->createFormBuilder()
->add('files', HiddenType::class, array('attr' => array('class' => 'file-list')))
->add('Delete', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$data = $form->getData();
foreach ($data as $record)
{
$file = $em->getRepository('MyBundle:MainMedia')->find($record);
$em->remove($file);
}
$em->flush();
$this->addFlash(
'multiple-deleted',
'Successfully deleted'
);
return $this->redirectToRoute('media_database_route');
}
return ['medias' => $media, 'deleteForm' => $form->createView()];
}
我呈现这个表单,并使用Jquery将每个文件ID作为逗号锯齿列表添加到输入中。(这通过使用复选框来实现)
当我查看控制台时,我正确地看到了列表。例如234235236(这些是文件id)
在控制器中,我呈现表单并尝试遍历列表并删除每个表单。但它只删除了第一个
有什么想法吗
谢谢。我搞砸了一下,得出了以下结论
foreach($data as $record) //loop over values
{
$myArray = explode(',', $record);
print_r($myArray);
foreach($myArray as $value) //loop over values
{
$file = $em->getRepository('MyBundle:MainMedia')->find($value);
$em->remove($file);
}
}
我意识到我不是在循环浏览一个列表,而是一个字符串。使用explode,我将这个字符串转换成一个数组,然后可以循环到该数组中
希望这有帮助。我想文件ID是唯一的?为什么不以列表的形式提交id,并通过“$em->getRepository('MyBundle:MainMedia')->findById($record->id);”迭代该列表并删除内容呢?目前,您指向的每一条数据记录都在使用该列表,它不会自动分离。
foreach($data as $record) //loop over values
{
$myArray = explode(',', $record);
print_r($myArray);
foreach($myArray as $value) //loop over values
{
$file = $em->getRepository('MyBundle:MainMedia')->find($value);
$em->remove($file);
}
}