编辑后在数据库中删除图像

时间:2011-11-01 15:32:12

标签: image zend-framework

我正在使用Zend Framework 1.11,在编辑记录后,即使没有上传其他图像,图像文件字段也会被清空。

我已经在sql查询中使用mysql解决了这个问题:

image=ifnull(%s, image)

完美的工作。我现在正在与Zend合作,我不确定如何做到这一点。有人可以帮忙吗?

控制器代码:

$input = $form->getValues();
        $item = Doctrine::getTable('Tcc_Model_Item')
            ->find($input['article_id']);

        $item->fromArray($input);
        $item->save();

使用学说模型完成更新。

表单字段是:

$image = new Zend_Form_Element_File('image');
 $image->setLabel('Image')
        ->addValidator('IsImage')
        ->setDestination('../public/uploads')
        ->addValidator('Size', false, '404800')
        ->addValidator('Extension', false, 'jpg,png,gif')
        ->addValidator('ImageSize', false, array(
                        'minwindth' => 50,
                        'minheight' => 50,
                        'maxwidth' => 250,
                        'maxheight' => 250))
     ->setOptions(array('class' => 'create'));

1 个答案:

答案 0 :(得分:0)

我想回答我自己的问题,因为我自己找到了一个解决方案,我对其他人有所帮助。

所以我为解决这个问题所做的是:

  1. 在用于编辑的表单中添加了一个隐藏字段,如下所示:

    $ image = new Zend_Form_Element_Hidden('image');

  2. 更改为图像文件字段(要上传的新图像),其名称如下:

    $ image2 = new Zend_Form_Element_File('image2');

  3. 这种方式在编辑隐藏字段时将包含“图像”字段的信息(如果有)。

    然后在控制器中我只是在save()之前有一个if / else语句,如下所示:

    if(!empty($input['image2']))
           { 
                $item->image = $input['image2']; 
        } else { 
                $item->image = $input['image'];
            }
    
    
     $item->save();
    

    希望它可以帮助其他人解决同样的问题。