#image #zend-framework
#изображение #zend-framework
Вопрос:
Я использую Zend Framework 1.11, и после редактирования записи поля файла изображения также очищаются, даже если никакое другое изображение не загружено.
Я уже решал эту проблему с mysql, используя это в запросе sql:
image=ifnull(%s, image)
И работал отлично. Сейчас я работаю с Zend и не уверен, как это можно сделать. Кто-нибудь может помочь, пожалуйста?
Код контроллера:
$input = $form->getValues();
$item = Doctrine::getTable('Tcc_Model_Item')
->find($input['article_id']);
$item->fromArray($input);
$item->save();
Обновление выполняется с использованием модели doctrine.
поле формы:
$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. Вам нужно опубликовать свой код, который редактирует запись
Ответ №1:
Я подумал ответить на свой собственный вопрос, поскольку сам нашел решение, чтобы помочь кому-то еще.
Итак, что я сделал, чтобы решить эту проблему, так это:
- добавлено скрытое поле в форму, используемую для редактирования следующим образом:
$image = новый Zend_Form_Element_Hidden(‘изображение’);
- изменено на поле файла изображения (новое изображение для загрузки) с другим именем, например:
$image2 = новый Zend_Form_Element_File(‘image2’);
Таким образом, при редактировании скрытое поле будет содержать информацию о поле «изображение», если таковое имеется.
Затем в контроллере у меня просто есть оператор if / else непосредственно перед save(), например:
if(!empty($input['image2']))
{
$item->image = $input['image2'];
} else {
$item->image = $input['image'];
}
$item->save();
Надеюсь, это поможет другим с такой же проблемой.