1
希望你能幫上忙。Magento image upoad文件名不保存在數據庫中
我是相當新的PHP,但想學得很快。
我試圖附加圖片上傳字段添加到庫擴展。下面是擴展控制器的代碼。我已經爲名爲galpic_popup_image的數據庫添加了一個額外的列,其值與現有的galpic_image列相同。
我設法讓上傳工作,因此圖像會保存在服務器上,但它是不保存在數據庫中的文件名,所以我不能把它的前端。
任何幫助,將不勝感激
class ParadoxLabs_Gallery_Adminhtml_GalleryController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->_setActiveMenu('cms/gallery');
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Gallery'), Mage::helper('adminhtml')->__('Gallery'));
$this->renderLayout();
}
public function editAction()
{
$this->loadLayout();
$this->_setActiveMenu('cms/gallery');
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Gallery'), Mage::helper('adminhtml')->__('Gallery'));
$this->_addContent($this->getLayout()->createBlock('gallery/adminhtml_gallery_edit'));
$this->renderLayout();
}
public function newAction()
{
$this->editAction();
}
public function saveAction()
{
if ($this->getRequest()->getPost()) {
// Image uploading code modified from http://is.gd/gS8p3
if(isset($_FILES['image']['name']) && (file_exists($_FILES['image']['tmp_name'])))
{
try{
$uploader = new Varien_File_Uploader('image');
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
$path = Mage::getBaseDir('media') . DS . 'p_gallery' . DS ;
$uploader->save($path, $_FILES['image']['name']);
$data['image'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'p_gallery/'. $_FILES['image']['name'];
}catch(Exception $e){}
}
else
{
if(isset($data['fileinputname']['delete']) && $data['fileinputname']['delete'] == 1){
$data['image_main'] = '';
}
else{
unset($data['image']);
}
}
if(isset($_FILES['popup_image']['name']) && (file_exists($_FILES['popup_image']['tmp_name'])))
{
try{
$uploader = new Varien_File_Uploader('popup_image');
$uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
$path = Mage::getBaseDir('media') . DS . 'p_gallery' . DS ;
$uploader->save($path, $_FILES['popup_image']['name']);
$popupdata['popup_image'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'p_gallery/'. $_FILES['popup_image']['name'];
}catch(Exception $e){}
}
else
{
if(isset($popupdata['fileinputname']['delete']) && $popupdata['fileinputname']['delete'] == 1){
$popupdata['popup_image_main'] = '';
}
else{
unset($popupdata['popup_image']);
}
}
try {
if(intval($this->getRequest()->getParam('id')) == 0) { // New
$model = Mage::getModel('gallery/gallery')
->setGalpicId ($this->getRequest()->getParam('id') )
->setGalpicStore($this->getRequest()->getParam('store'))
->setGalpicDate (date('Y-m-d', time()))
->setGalpicName ($this->getRequest()->getParam('name') )
->setGalpicImage($data['image'] )
->setGalpicPopupImage($popupdata['popup_image'] )
->save();
}
else { // Edit
$model = Mage::getModel('gallery/gallery')
->setGalpicId ($this->getRequest()->getParam('id') )
->setGalpicStore($this->getRequest()->getParam('store'))
->setGalpicName ($this->getRequest()->getParam('name') )
->setGalpicImage($data['image'] )
->setGalpicPopupImage($popupdata['popup_image'] )
->save();
}
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Galpic was successfully saved'));
$this->_redirect('*/*/');
return;
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
return;
}
}
$this->_redirect('*/*/');
}
public function deleteAction()
{
if($this->getRequest()->getParam('id') > 0) {
try {
$model = Mage::getModel('gallery/gallery');
$model->setGalpicId($this->getRequest()->getParam('id'))
->delete();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Galpic was successfully deleted'));
$this->_redirect('*/*/');
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
$this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
}
}
$this->_redirect('*/*/');
}
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('cms/gallery');
}
}
這裏是用來捕獲數據的形式:
class ParadoxLabs_Gallery_Block_Adminhtml_Gallery_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
{
protected function _prepareLayout()
{
parent::_prepareLayout();
if (Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) {
$this->getLayout()->getBlock('head')->setCanLoadTinyMce(true);
}
}
protected function _prepareForm()
{
$form = new Varien_Data_Form(array(
'enctype' => 'multipart/form-data',
'id' => 'edit_form',
'action' => $this->getUrl('*/*/save', array('id' => $this->getRequest()->getParam('id'))),
'method' => 'post',
));
$fieldset = $form->addFieldset('gallery_form', array(
'legend' => Mage::helper('gallery')->__('Galpic'),
'class' => 'fieldset-wide'
)
);
$fieldset->addField('galpic_name', 'text', array(
'name' => 'name',
'label' => Mage::helper('gallery')->__('Name'),
'class' => 'required-entry',
'required' => true,
));
$fieldset->addField('galpic_image', 'image', array(
'name' => 'image',
'label' => Mage::helper('gallery')->__('Image'),
'class' => 'required-entry',
'required' => true,
));
$fieldset->addField('galpic_popup_image', 'image', array(
'name' => 'popup_image',
'label' => Mage::helper('gallery')->__('Popup Image'),
'class' => 'required-entry',
'required' => true,
));
$fieldset->addField('galpic_store', 'select', array(
'name' => 'store',
'label' => Mage::helper('core')->__('Store View'),
'title' => Mage::helper('core')->__('Store View'),
'required' => true,
'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true),
));
if (Mage::registry('gallery')) {
$form->setValues(Mage::registry('gallery')->getData());
}
$form->setUseContainer(true);
$this->setForm($form);
return parent::_prepareForm();
}
}
一個問題,我看到的是,$數據不聲明。在您的代碼所基於的wiki中,$ data被聲明爲if語句中的內容:if($ data = $ this→getRequest()→getPost())。如果你這樣做,那麼你的變量$ popupdata是多餘的,因爲popup_image的值將被包含在$ data ['popup_image']中,並且刪除圖像選項將起作用。但是,上述內容並沒有解釋爲什麼彈出式圖像沒有保存在數據庫中,沒有代碼拋出錯誤。 – kiatng
謝謝Kiatng,我會檢查一下。我仍然不明白爲什麼圖像url沒有保存在數據庫中。正如你所說,根本沒有錯誤,但看到我是新來的PHP我可能會錯過簡單的東西:/ – VeryGeek