2016-08-02 125 views
0

我的问题是,我需要一个复选框形式,当勾选并提交时,它从数据库中删除一个条目。Symfony 2.3使用复选框形式删除数据库中的行/条目

可以说我使用“文件类型字段”将图像上载到数据库并显示在页面的某处。所以在我的树枝我想有一个

<a href="{{ path('z_image_delete', {'id':aimage.id})}}" class="icon-edit" style="position:absolute;"></a> 
在for循环中

以获取图像的ID,这使一个图标,如果点击,就会进入该航线z_image_delete的行动,并将使用删除图像用

remove()方法和动作的flush()

有没有什么办法,如果我使用一个复选框类型字段有这相同的功能?

因此,而不是一个图标,我会有一个复选框和提交按钮,如果该复选框被选中并提交它将删除图像。

在此先感谢

+0

在复选框值你把图像的ID,当您提交表单在您检查了哪些复选框已被选中以获取与图片ID对应的值,然后您可以轻松删除图片 – DOZ

+0

是否存在复选框的isChecked功能?我很抱歉,如果这是一个愚蠢的问题,但我对symfony很陌生,2.3的文件突然从网站上消失。 @DOZ – Nerdicon

回答

0

创建Form,为每个图像的复选框。

使用图像ID作为复选框的ID。

如果表单提交,并在图像的有效迭代知道,如果他们的复选框被选中或不:

use Symfony\Component\HttpFoundation\Request; 

use Symfony\Component\Form\Extension\Core\Type\CheckboxType; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 

public function deleteImagesAction(Request $request){ 

    // ... 

    $images = // ... 

    $formBuilder = $this->createFormBuilder(); 

    foreach($images as $image){ 
     $formBuilder->add($image->getId(),CheckboxType::class,array('label'=>$image->getName(),'required'=>false)); 
    } 

    $formBuilder->add('submit',SubmitType::class); 

    $form = $formBuilder->getForm(); 

    $form->handleRequest($request); 

    if($form->isValid()){ 
     $data = $form->getData(); 

     $em = $this->getDoctrine()->getEntityManager(); 

     foreach($images as $image){ 
      if($data[$image->getId()]){ 
       $em->remove($image); 
      } 
     } 

     $em->flush(); 

     return $this->redirectToRoute(...); 
    } 

    return $this->render(...); 
} 
+0

我只是在这里问一个非常愚蠢的问题,所以怜悯我,但$图像是一样的data_class?它是否具有实体图像的实体路径? – Nerdicon

+0

刚刚得到它,它是存储库,我的坏 – Nerdicon

+0

它工作?那么请接受答案。 – Alsatian

相关问题