Symfony 3 - 多个删除表单只删除一个记录

时间:2017-05-30 10:49:55

标签: php jquery forms symfony

我一直在处理文件内联网。我试图实现的最新功能是多重删除系统。目前,我在控制器中渲染一个非映射表单:

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')。

在控制器中,我渲染表单并尝试通过列表并删除每个表单。但它只删除了第一个。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我搞砸了一下,得出了以下结论。

QMainWindow

我意识到我没有循环遍历列表而是字符串。使用explode,我将这个字符串转换为一个数组,然后我可以遍历它。

希望这有帮助。