Magento在自定义模型上保存Multiselect值

Magento在自定义模型上保存Multiselect值,magento,Magento,我已经在Magento中创建了一个自定义模型,可以在管理员中访问和编辑。然而,我在处理数组的问题时遇到了困难。当我去保存模型时,文本字段保存得很好,但multiselect字段只保存为“array”,我无法去编辑它 我需要知道如何在数据库中保存单独的行而不是逗号seprate。 有人能帮忙吗?非常感谢任何帮助 public function saveAction() { if ($data = $this->getRequest()->getPost()) {

我已经在Magento中创建了一个自定义模型,可以在管理员中访问和编辑。然而,我在处理数组的问题时遇到了困难。当我去保存模型时,文本字段保存得很好,但multiselect字段只保存为“array”,我无法去编辑它

我需要知道如何在数据库中保存单独的行而不是逗号seprate。

有人能帮忙吗?非常感谢任何帮助

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('*/*/');
}
公共函数saveAction(){
如果($data=$this->getRequest()->getPost()){
如果(isset($\u文件['image']['name'])&&&$\u文件['image']['name']!=null){
试试{
/*开始上传*/
$uploader=新的Varien_文件上传器(“图像”);
//任何延长都有效
$uploader->setAllowedExtensions(数组('jpg','jpeg','gif','png');
$uploader->setAllowerNameFiles(false);
//设置文件上载模式
//false->直接在指定文件夹中获取文件
//true->在类似产品的文件夹中获取文件
//(file.jpg的格式类似于/media/f/i/file.jpg)
$uploader->setfiles(false);
//我们将媒体设置为上传目录
$path=Mage::getBaseDir('media').DS.magentothemes/vendorlist.DS;
$uploader->save($path,$_文件['image']['name']);
}捕获(例外$e){
}
//这样,名称将保存在DB中
$basepath=Mage::getBaseUrl().'media/magentothemes/vendorlist/';
$basepath=str_replace(“index.php/”,“”,$basepath);
$data['image']='';
}
**$data['productid']=join(“,”,$\u POST['productid'])**
$model=Mage::getModel('vendorlist/vendorlist');
$model->setData($data)->setId($this->getRequest()->getParam('id');
试一试{
如果($model->getCreatedTime==NULL | |$model->getUpdateTime()==NULL){
$model->setCreatedTime(现在())
->setUpdateTime(now());
}否则{
$model->setUpdateTime(now());
}   
$model->save();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('vendorlist')->(项目已成功保存));
Mage::getSingleton('adminhtml/session')->setFormData(false);
如果($this->getRequest()->getParam('back')){
$this->_重定向('*/*/edit',数组('id'=>$model->getId());
返回;
}
$this->_重定向('*/*/');
返回;
}捕获(例外$e){
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setFormData($data);
$this->_重定向('*/*/edit',array('id'=>$this->getRequest()->getParam('id'));
返回;
}
}
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('vendorlist')->(找不到要保存的项));
$this->_重定向('*/*/');
}

如果希望表中有单独的行,我假设id列不是主键。
在这种情况下,您可以尝试:

    $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
        }
    }