2013-10-03 3 views
0

Я создал пользовательскую модель в Magento, которая может быть доступна и отредактирована администратором. Однако у меня проблемы с массивом. Когда я иду, чтобы сохранить модель, текстовое поле сохраняет все в порядке, но поле multiselect просто сохраняет как «массив», и тогда я не могу пойти и отредактировать его.Magento Сохранение Multiselect Значение на пользовательской модели

Мне нужно знать, как сохранить отдельную строку в databse, а не запятую.

Может ли кто-нибудь помочь в этом? Любая помощь очень ценится !!!

public function saveAction() { 
    if ($data = $this->getRequest()->getPost()) { 

     if(isset($_FILES['image']['name']) && $_FILES['image']['name'] != null) { 
      try { 
       /* Starting upload */ 
       $uploader = new Varien_File_Uploader('image'); 

       // Any extention would work 
       $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); 
       $uploader->setAllowRenameFiles(false); 

       // Set the file upload mode 
       // false -> get the file directly in the specified folder 
       // true -> get the file in the product like folders 
       // (file.jpg will go in something like /media/f/i/file.jpg) 
       $uploader->setFilesDispersion(false); 

       // We set media as the upload dir 
       $path = Mage::getBaseDir('media') . DS.'magentothem/vendorlist'.DS ; 
       $uploader->save($path, $_FILES['image']['name']); 

      } catch (Exception $e) { 

      } 

      //this way the name is saved in DB 
      $basepath=Mage::getBaseUrl().'media/magentothem/vendorlist/'; 
      $basepath=str_replace("index.php/","",$basepath); 
      $data['image'] = '<img src="'.$basepath.$_FILES['image']['name'].'" width="150" height="100px" alt="" />'; 
     } 

     **$data['productid'] = join("," ,$_POST['productid']);** 

     $model = Mage::getModel('vendorlist/vendorlist');  
     $model->setData($data)->setId($this->getRequest()->getParam('id')); 

     try { 
      if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) { 
       $model->setCreatedTime(now()) 
        ->setUpdateTime(now()); 
      } else { 
       $model->setUpdateTime(now()); 
      } 

      $model->save(); 
      Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('vendorlist')->__('Item was successfully saved')); 
      Mage::getSingleton('adminhtml/session')->setFormData(false); 

      if ($this->getRequest()->getParam('back')) { 
       $this->_redirect('*/*/edit', array('id' => $model->getId())); 
       return; 
      } 
      $this->_redirect('*/*/'); 
      return; 
     } catch (Exception $e) { 
      Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
      Mage::getSingleton('adminhtml/session')->setFormData($data); 
      $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
      return; 
     } 
    } 
    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('vendorlist')->__('Unable to find item to save')); 
    $this->_redirect('*/*/'); 
} 

ответ

0

Если вы хотите отдельные строки в своей таблице, я предполагаю, что столбец id не является PK.
В этом случае вы можете попробовать:

$model = Mage::getModel('vendorlist/vendorlist');  
    $productIds = Mage::app()->getRequest()->getParam('productid'); 
    foreach ($productIds as $productId) { 
     $model->setData($data)->setProductid($productId)->setId($this->getRequest()->getParam('id')); 

     try { 
      if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) { 
       $model->setCreatedTime(now()) 
        ->setUpdateTime(now()); 
      } else { 
       $model->setUpdateTime(now()); 
      } 

      $model->save(); 
      //remove what is after, put it after the try/catch 
     } catch (Exception $e) { 
      //handle exception 
     } 
    } 
Смежные вопросы