Image deleted in database after editing
我使用的是 Zend Framework 1.11,在编辑记录后,即使没有上传其他图像,图像文件字段也会被清空。
我之前在 sql 查询中使用这个 mysql 解决了这个问题:
1 | image=ifnull(%s, image) |
而且工作完美。我现在正在与 Zend 合作,但我不确定如何做到这一点。有人可以帮忙吗?
控制器代码:
1 2 3 4 5 6 | $input = $form->getValues(); $item = Doctrine::getTable('Tcc_Model_Item') ->find($input['article_id']); $item->fromArray($input); $item->save(); |
更新是使用学说模型完成的。
表单域是:
1 2 3 4 5 6 7 8 9 10 11 12 | $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')); |
我想回答我自己的问题,因为我自己找到了一个可以帮助其他人的解决方案。
所以我为解决这个问题所做的是:
向用于编辑的表单添加了一个隐藏字段,如下所示:
$image = new Zend_Form_Element_Hidden(\\'image\\');
更改为图像文件字段(要上传的新图像),具有不同的名称,如下所示:
$image2 = new Zend_Form_Element_File(\\'image2\\');
这样编辑隐藏字段时会包含"image"字段的信息(如果有)。
然后在控制器中,我只是在 save() 之前有一个 if/else 语句,如下所示:
1 2 3 4 5 6 7 8 9 | if(!empty($input['image2'])) { $item->image = $input['image2']; } else { $item->image = $input['image']; } $item->save(); |
希望它能帮助其他有同样问题的人。