我正在使用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'));
答案 0 :(得分:0)
我想回答我自己的问题,因为我自己找到了一个解决方案,我对其他人有所帮助。
所以我为解决这个问题所做的是:
在用于编辑的表单中添加了一个隐藏字段,如下所示:
$ image = new Zend_Form_Element_Hidden('image');
更改为图像文件字段(要上传的新图像),其名称如下:
$ image2 = new Zend_Form_Element_File('image2');
这种方式在编辑隐藏字段时将包含“图像”字段的信息(如果有)。
然后在控制器中我只是在save()之前有一个if / else语句,如下所示:
if(!empty($input['image2']))
{
$item->image = $input['image2'];
} else {
$item->image = $input['image'];
}
$item->save();
希望它可以帮助其他人解决同样的问题。