我一直在处理文件内联网。我试图实现的最新功能是多重删除系统。目前,我在控制器中渲染一个非映射表单:
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作为逗号锯齿列表添加到输入。 (这可以通过使用复选框来实现。
$("#span-delete").click(function(){
var checkedValues = $('.media-checkbox:checked').map(function() {
return this.value;
}).get();
$('.file-list').val(checkedValues);
console.log($('.file-list').val());
});
当我查看控制台时,我正确地看到了列表。例如234,235,236(这些是文件ID')。
在控制器中,我渲染表单并尝试通过列表并删除每个表单。但它只删除了第一个。
有什么想法吗?
感谢。
答案 0 :(得分:0)
我搞砸了一下,得出了以下结论。
QMainWindow
我意识到我没有循环遍历列表而是字符串。使用explode,我将这个字符串转换为一个数组,然后我可以遍历它。
希望这有帮助。