如何删除文章中的图像。 OnetoOne协会。我应该在表格中做些什么?

时间:2015-01-07 16:56:20

标签: php symfony file-upload doctrine-orm

我使用 - > add('file','file')添加与ARTICLE相关联的IMAGE。它运作得很好。

但是我该如何从文章中删除图像。带有文件的表单只允许我添加或更改与文章关联的IMAGE。没有简单的选择说:删除图像。
我应该怎么做?

  • 文件中是否存在选项以将此功能添加到表单中?
  • 我应该在ArticleType中添加新字段(映射'到'false',因为它不是属性或实体)此字段允许用户选中“删除图像”复选框。当值设置为true时,我处理控制器中的图像移除?

我更多地要求方法学而不是代码问题,谢谢你的帮助

代码

class ArticleType extends AbstractType
{
  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $builder
       ->add('image', new ImageType());
       ->add('removeimage', 'checkbox', array(
                'label'  => 'Remove the image?',
                'mapped' => false,))
  }
}

class ImageType extends AbstractType
{
  public function buildForm(FormBuilderInterface $builder, array $options)
  {
     $builder
        ->add('file', 'file');
  }
}

1 个答案:

答案 0 :(得分:0)

如果您有时间设置文件上传,我建议您Handle File Uploads with Doctrine。我有一个使用本文所述实践的工作项目,它运行得非常好。

如果您想在表单中填写“删除”按钮,请按照以下简单步骤操作:

首先在表单构建器中添加以下行:

->add('save', 'submit', array('label' => 'Save')) // it's for saving article
->add('delete', 'submit', array('label' => 'Delete')) // it's for deleting file

然后在控制器中检查点击了哪个按钮:

if ($form->get('delete')->isClicked()) { // your code here }

代替您的代码写下类似的内容:

$article->getImage()->removeUpload();
$this->getDoctrine()->getManager()->flush();

就是这样!