我的问题是我需要一个复选框表单,当勾选并提交时,它会从数据库中删除一个条目。
比方说,我使用"文件类型字段"将图像上传到数据库,并显示在页面的某个位置。所以在我的树枝上我会有一个
<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(...);
}