Symfony 2.3使用复选框形式删除数据库中的行/条目


Symfony 2.3 using checkbox form to delete row/entry in database

我的问题是我需要一个复选框表单,当勾选并提交时,它会从数据库中删除一个条目。

比方说,我使用"文件类型字段"将图像上传到数据库,并显示在页面的某个位置。所以在我的树枝上我会有一个

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

在for循环中获取图像的id,这会放置一个图标,如果单击该图标,它将转到具有路由z_image_delete的操作,并将使用具有的操作删除图像

remove()和flush()

如果我使用复选框类型字段,有什么方法可以实现同样的功能吗?

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

提前感谢

创建一个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(...);
}