/** * Save uploaded file and set its name to banner * * @param SI_banner_Model_Mysql4_Banner $object */ protected function _beforeSave(Mage_Core_Model_Abstract $object) { Mage::log($object); $value = $object->getData(self::IMAGE); $value2 = $object->getData(self::IMAGE2); $path = Mage::helper('banner')->getBannerMediaPath(); if (is_array($value) && !empty($value['delete'])) { try { $io = new Varien_Io_File(); $io->open(array('path' => $path)); $image = str_replace(Mage::helper('banner')->getBannerMediaUrl(), '', $value['value']); if ($io->fileExists($image)) { $io->rm($image); } } catch (Exception $e) { } $object->setData(self::IMAGE, ''); return; } try { $uploader = new Varien_File_Uploader(self::IMAGE); $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); $uploader->setAllowRenameFiles(true); $uploader->save($path); $object->setData(self::IMAGE, $uploader->getUploadedFileName()); } catch (Exception $e) { $object->unsetData(self::IMAGE); } //start if (is_array($value2) && !empty($value2['delete'])) { try { $io2 = new Varien_Io_File(); $io2->open(array('path' => $path)); $image2 = str_replace(Mage::helper('banner')->getBannerMediaUrl(), '', $value2['value']); if ($io2->fileExists($image2)) { $io2->rm($image2); } } catch (Exception $e) { } $object->setData(self::IMAGE2, ''); return; } try { $uploader = new Varien_File_Uploader(self::IMAGE2); $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); $uploader->setAllowRenameFiles(true); $uploader->save($path); $object->setData(self::IMAGE2, $uploader->getUploadedFileName()); } catch (Exception $e) { $object->unsetData(self::IMAGE2); } //end //save colors to settings table $settings = $this->getSettings(); foreach ($object->getData() as $key => $value) { if (false !== strpos($key, '_color')) { $settings->setData($key, $value); } } $settings->save(); return parent::_beforeSave($object); }
Объект когда ставлю галочки возле изображений на удаление.
2011-04-20T16:27:55+00:00 DEBUG (7): SI_Banner_Model_Banner Object ( [_eventPrefix:protected] => core_abstract [_eventObject:protected] => object [_resourceName:protected] => banner/banner [_resource:protected] => [_resourceCollectionName:protected] => banner/banner_collection [_cacheTag:protected] => [_dataSaveAllowed:protected] => 1 [_isObjectNew:protected] => [_data:protected] => Array ( [form_key] => frYOBrCeh8Qymgg1 [title] => test5 [image] => Array ( [delete] => 1 [value] => */magento/media/banner/test51.jpg ) [image_sec] => Array ( [delete] => 1 [value] => */magento/media/banner/test52.jpg ) [url] => http://www.armo.ee [menu_title_strong] => Menu Title Strong [menu_title] => Menu Title [store_ids] => 1 [position] => 5 [status] => 1 [menu_title_strong_color] => #fff [menu_hover_title_strong_color] => #fff [menu_title_color] => #fff [menu_hover_title_color] => #fff [menu_bg_color] => #fff [banner_id] => 5 ) [_hasDataChanges:protected] => 1 [_origData:protected] => [_idFieldName:protected] => banner_id [_isDeleted:protected] => )
Если удаляется одно изображение то удаляются оба изображения, второму изображению присваивается свойство Array и в логе ошибка:
2011-04-20T16:27:55+00:00 ERR (3): Notice: Array to string conversion /public_web/www/magento/lib/Zend/Db/Statement/Pdo.php on line 228
Еррор внутри функции ?stmt->execute($params)
public function _execute(array $params = null) { try { if ($params !== null) { return $this->_stmt->execute($params); } else { return $this->_stmt->execute(); } } catch (PDOException $e) { #require_once 'Zend/Db/Statement/Exception.php'; throw new Zend_Db_Statement_Exception($e->getMessage(), (int) $e->getCode(), $e); } }