Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 3-多个删除表单仅删除一条记录_Php_Jquery_Forms_Symfony - Fatal编程技术网

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);
        }
    }