Изображение удалено в базе данных после редактирования - PullRequest
0 голосов
/ 01 ноября 2011

Я использую 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();

Обновление выполняется с использованием модели доктрины.

Поле формы:

$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 голосов
/ 26 ноября 2011

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

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

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

    $ image = new Zend_Form_Element_Hidden ('image');

  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();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...