2012-05-02 2 views

ответ

3

Чтобы загрузить фотографию профиля для пользователя в magento, нам нужно выполнить несколько шагов, как показано ниже.

  • Добавить новое поле для фотографий профиля (How to create new fields for customer - Посмотрите на эту ссылку, это поможет вам).
  • Вышеупомянутая ссылка поможет вам добавить новую заявку в БД, и вам необходимо загрузить эту фотографию вручную, указанный ниже код поможет вам загрузить фотографии в пурпурно.

       if(isset($_FILES['logo']['name']) and (file_exists($_FILES['logo']['tmp_name']))) 
           { 
    
            try { 
            $uploader = new Varien_File_Uploader('logo'); 
            $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png')); 
            $uploader->setAllowRenameFiles(false); 
            $uploader->setFilesDispersion(false); 
            $path  = Mage::getBaseDir('media') . DS .'catalog/customer/logo/'; 
            $newName = time() . $_FILES['logo']['name']; 
            $uploader->save($path, $newName); 
            $customer->setLogo($newName); 
    
            // actual path of image 
            $imageUrl = $path . $newName; 
    
            // path of the resized image to be saved 
            // here, the resized image is saved in media/resized folder 
            $imageResized = $path . $newName; 
    
            // resize image only if the image file exists and the resized image file doesn't exist 
            // the image is resized proportionally with the width/height 135px 
            if (!file_exists($imageResized)&&file_exists($imageUrl)) : 
             $imageObj = new Varien_Image($imageUrl); 
             $imageObj->constrainOnly(TRUE); 
             $imageObj->keepAspectRatio(TRUE); 
             $imageObj->keepFrame(FALSE); 
             $imageObj->resize(150, 150); 
             $imageObj->save($imageResized); 
    
            endif; 
            }catch(Exception $e) { 
    
            } 
           } 
    
  • После загрузки нам необходимо сохранить имя файла в БД.

    $ customer-> setLogo ($ newName);

+0

Hi Sankar. Спасибо за решение! Я поместил код в наблюдателя моего модуля, но когда срабатывает событие «customer_save_before» или «customer_save_after» (внутри клиентского конца), массив $ _FILES пуст. Я получаю имя файла в массиве $ _POST, но я не получаю $ _FILES. Есть идеи? Может быть, вы можете предложить другое место, где я мог бы поставить этот код? – Alan

+0

Хорошо, я понял. Форма «Дополнительная информация» требует атрибута enctype = «multipart/form-data». В противном случае он не будет отправлять файлы. – Alan

Смежные вопросы