【发布时间】:2017-09-12 21:55:39
【问题描述】:
我正在尝试使用下面的代码以编程方式创建产品,一切都很好,但如果客人创建产品,则自定义图像不会上传
谁能告诉我正确的方法?
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
}
以下代码对注册用户正常工作:
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;
}
【问题讨论】:
-
您在日志中遇到了什么错误?有没有试过调试代码看看问题出在哪里?
-
@lxx 似乎
$newImagePath没有发送任何值.....你能帮我解决问题吗..... -
添加更多日志来检查 newimagepath 或 imagepath 是否正确或与您假设的相同?
-
@lxx 我在编码方面不太擅长,我会按照你说的那样尝试......但如果你能帮助我编写一些代码,那就太好了......
标签: magento magento-1.8