2017-04-17 2 views
0

에 대한 업로드되지는 모두 잘하지만, 손님이 제품을 만드는 경우보다 사용자 정의 이미지는 누군가가 나에게 올바른 방법을 보여줄 수 이미지 나는 programtically 제품을 만들기 위해 코드를 아래에 노력하고 프로그래밍 방식으로 만든 제품

을 업로드하지?

protected function _thisProduct($type, $doSave=true, $originalProduct, $newImagePath="") 
{     

    $product = Mage::getModel('catalog/product'); 
    // product images 

    $images = array(
     'thumbnail' => 'image.png', // displaying under cart page 
     //'small_image' => 'image.png', 
     'image'  => 'image.png', // displaying under my design 
    ); 

    foreach ($images as $imageType => $imageFileName) { 
     if($newImagePath != ""){ 
      $dir = Mage::getBaseDir('media') . DS . 'one_two_three/quote/'; 
      $path = $dir . $newImagePath; 
     }else{ 
      $dir = Mage::getBaseDir('media') . DS . 'example/super/'; 
      $path = $dir . $imageFileName; 
     } 
     //echo $path."<br>"; 
     if (file_exists($path)) { 
      try { 
       $product->addImageToMediaGallery($path, $imageType, false); 
      } catch (Exception $e) { 
       echo $e->getMessage(); 
      } 
     } else { 
      echo "No image path found dear: `{$path}`<br/>"; 
     } 
    } 

    $customerId = Mage::getSingleton('customer/session')->getCustomerId(); 
    $product->setCreatedByCustomerId($customerId); 

    if ($doSave) 
     $product->save();   

    return $product; 

} 
+0

어떤 오류 것은 당신이 로그에 점점 : 등록 된 사용자를 위해 제대로 작동 코드 아래

protected function _thisProduct($type, $doSave=true, $originalProduct, $newImagePath="") { // code for Guest $session = Mage::getSingleton('customer/session'); if ($session->isLoggedIn()) { return; } $result = array( 'success' => false ); if ($this->getRequest()->isPost()) { $login = $this->getRequest()->getPost('login'); $productId=$this->getRequest()->getPost('product_id'); // echo $login['product_id'];die; if (!empty($login['username']) && !empty($login['password'])) { try { $session->login($login['username'], $login['password']); $result['redirect'] = $this->_getRefererUrl() ? $this->_getRefererUrl() : Mage::getUrl('customer/account', array('_secure' => true)); $result['success'] = true; $customerId = Mage::getSingleton('customer/session')->getCustomerId(); // code for guest end $product = Mage::getModel('catalog/product'); // product images $images = array( 'thumbnail' => 'image.png', // displaying under cart page //'small_image' => 'image.png', 'image' => 'image.png', // displaying under my design ); foreach ($images as $imageType => $imageFileName) { if($newImagePath != ""){ $dir = Mage::getBaseDir('media') . DS . 'one_two_three/quote/'; $path = $dir . $newImagePath; }else{ $dir = Mage::getBaseDir('media') . DS . 'example/super/'; $path = $dir . $imageFileName; } //echo $path."<br>"; if (file_exists($path)) { try { $product->addImageToMediaGallery($path, $imageType, false); } catch (Exception $e) { echo $e->getMessage(); } } else { echo "No image path found dear: '{$path}'<br/>"; } } $customerId = Mage::getSingleton('customer/session')->getCustomerId(); $product->setCreatedByCustomerId($customerId); if ($doSave) $product->save(); return $product; // code for guest } catch (Mage_Core_Exception $e) { switch ($e->getCode()) { case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED: $message = Mage::helper('customer')->__('This account is not confirmed.username'); break; case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD: $message = $e->getMessage(); break; default: $message = $e->getMessage(); } $result['error'] = $message; $session->setUsername($login['username']); } catch (Exception $e) { Mage::helper("ajaxlogin")->log("There has been an error during the login."); // Mage::logException($e); // PA DSS violation: this exception log can disclose customer password } } else { $result['error'] = Mage::helper('customer')->__('Login and password are required.'); } } $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result)); // code for guest end } 

? 문제가있는 곳을보기 위해 코드를 디버깅 해 보셨습니까? – lxx

+0

@ lxx는'$ newImagePath'가 어떤 값도 보내지 않고있는 것 같습니다. ..... 문제를 해결하는 데 도움주세요 ..... –

+0

newimagepath 또는 imagepath를 확인하기 위해 더 많은 로깅을 추가하는 것이 정확하거나 동일합니다 당신은 그것이 무엇이라고 생각합니까? – lxx

답변

0

업로드 이미지를 사용하여 비누 API를

$base_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); 
$client = new SoapClient($base_url.'index.php/api/soap/?wsdl',array('trace' => 1,'connection_timeout' => 120)); 
$session = $client->login('admin','admin123'); 
function uploadImage($productId,$session,$client,$image) 
{ 
// need to check on child image 
$file_image = explode(".",basename(trim($image))); 
$fileName = $file_image[0]; 
$file = array(
       'content' => base64_encode(file_get_contents($image)), 
       'mime' => 'image/jpeg', 
       'name' => $fileName 
       ); 
    $result = $client->call(
    $session, 
    'catalog_product_attribute_media.create', 
    array(
    $productId, 
    array('file'=>$file, 'label'=>'label', 'position'=>'100', 'types'=>array('small_image','image','thumbnail'), 'exclude'=>0) 
) 
); 
} 
관련 문제