Php Symfony2和条令:仅从多个请求中删除一条记录

Php Symfony2和条令:仅从多个请求中删除一条记录,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,本文末尾包含的操作是通过jQuery从ajax调用调用的。当我尝试删除多条记录时,只删除第一条记录,但每次请求都会打印flash消息 我检查了输入数据,结果是正确的。没有例外 有什么想法吗?谢谢 /** * @Route("/cancella", name="training_plan_activity_edition_final_delete") * @Method({"POST"}) * * @param Request $request * @return \Symfony\Co

本文末尾包含的操作是通过jQuery从ajax调用调用的。当我尝试删除多条记录时,只删除第一条记录,但每次请求都会打印flash消息

我检查了输入数据,结果是正确的。没有例外

有什么想法吗?谢谢

/**
 * @Route("/cancella", name="training_plan_activity_edition_final_delete")
 * @Method({"POST"})
 *
 * @param Request $request
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function deleteAction(Request $request)
{
    if (!$request->isXmlHttpRequest()) {
        throw new \Exception('this controller allows only ajax requests');
    }
    $ids = json_decode($request->get('ids'), true);
    $em = $this->getDoctrine()->getManager();
    foreach ($ids as $id) {
        if($id <> 'on') {
            $trainingPlanActionEditionFinal = $this->getDoctrine()
                ->getRepository('TrainingPlanBundle:TrainingPlanActionEditionFinal')
                ->find($id);
            if (!$trainingPlanActionEditionFinal) {
                throw $this->createNotFoundException(
                    'Training plan action edition final with id ' . $id . ' not found'
                );
            }
            $trainingPlanSlug = $trainingPlanActionEditionFinal->getSlug();
            try {
                $em->remove($trainingPlanActionEditionFinal);
                $em->flush();
                $this->get('session')->getFlashbag()->add('success', 'Cancellazione dell\'edizione avvenuta con successo');
            } catch (\Exception $e) {
                $this->get('session')->getFlashbag()->add('error', 'Impossibile cancellare l\'edizione');
            }
        }
    }
    return new Response($this->generateUrl('training_plan_action_edition_final_list', array(
            'trainingPlanSlug' => $trainingPlanSlug
        )
    ));
}
/**
*@Route(“/cancella”,name=“培训计划活动版本最终删除”)
*@Method({“POST”})
*
*@param Request$Request
*@return\Symfony\Component\HttpFoundation\Response
*/
公共函数deleteAction(请求$Request)
{
如果(!$request->isXmlHttpRequest()){
抛出new\Exception('此控制器仅允许ajax请求');
}
$ids=json_decode($request->get('ids'),true);
$em=$this->getDoctrine()->getManager();
foreach($id作为$id){
如果($id'on'){
$trainingPlanActionEditionFinal=$this->getDoctrine()
->getRepository('TrainingPlanBundle:TrainingPlanActionEditionFinal')
->查找($id);
if(!$trainingPlanActionEditionFinal){
抛出$this->createNotFoundException(
“id为“$id”的培训计划行动版最终版。未找到”
);
}
$trainingPlanSlug=$trainingPlanActionEditionFinal->getSlug();
试一试{
$em->删除($trainingPlanActionEditionFinal);
$em->flush();
$this->get('session')->getFlashbag()->add('success','Cancellazione dell'edizione avvenuta con successo');
}捕获(\异常$e){
$this->get('session')->getFlashbag()->add('error','impossible cancelare l'edizione');
}
}
}
返回新响应($this->generateUrl('training\u plan\u action\u edition\u final\u list',数组(
“trainingPlanSlug”=>$trainingPlanSlug
)
));
}

我建议您在json_解码后使用var_dump($ids),并从存储库->查找中使用var_dump加载对象的id,这应该会显示任何问题。从Symfony2.6开始,您还可以从控制器或Teig使用更方便的方法。它将使用探查器工具栏。Thx!我发现了问题所在。当我输入代码$trainingPlanSlug=$trainingPlanActionEditionFinal->getSlug()时;在foreach循环之外,一切都正常。。。但我不明白为什么!我建议您在json_解码后使用var_dump($ids),还可以从存储库->find-中使用var_dump加载对象的id,这应该会显示任何问题。从Symfony2.6开始,您还可以从控制器或Teig使用更方便的方法。它将使用探查器工具栏。Thx!我发现了问题所在。当我输入代码$trainingPlanSlug=$trainingPlanActionEditionFinal->getSlug()时;在foreach循环之外,一切都正常。。。但我不明白为什么!