Изображение, удаленное в базе данных после редактирования

#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:

Я подумал ответить на свой собственный вопрос, поскольку сам нашел решение, чтобы помочь кому-то еще.

Итак, что я сделал, чтобы решить эту проблему, так это:

  1. добавлено скрытое поле в форму, используемую для редактирования следующим образом:

    $image = новый Zend_Form_Element_Hidden(‘изображение’);

  2. изменено на поле файла изображения (новое изображение для загрузки) с другим именем, например:

    $image2 = новый Zend_Form_Element_File(‘image2’);

Таким образом, при редактировании скрытое поле будет содержать информацию о поле «изображение», если таковое имеется.

Затем в контроллере у меня просто есть оператор if / else непосредственно перед save(), например:

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


 $item->save();
 

Надеюсь, это поможет другим с такой же проблемой.