2013-10-02 4 views
0

Я пытаюсь нажать изображение в корзине с помощью $ cart-> addProduct ($ product, $ request);Проникнуть в корзине Magento

Если я использую пользовательские параметры в обычном продукте, это выглядит так, как выглядит мой запрос.

$_FILES: 
    array(2) { 
    ["options_76_file"] => array(5) { 
    ["name"] => string(14) "Conference.jpg" 
    ["type"] => string(10) "image/jpeg" 
    ["tmp_name"] => string(14) "/tmp/phpkKRgHA" 
    ["error"] => int(0) 
    ["size"] => int(938613) 
    } 
    ["options_80_file"] => array(5) { 
    ["name"] => string(16) "capra-felice.jpg" 
    ["type"] => string(10) "image/jpeg" 
    ["tmp_name"] => string(14) "/tmp/php8SXzIk" 
    ["error"] => int(0) 
    ["size"] => int(93196) 
    } 
} 

Request: 
array(7) { 
    ["uenc"] => string(76) "aHR0cDovL2Rldi5rd2lrd2ViLmNvbS5hdS9uc2ovYWNjZXNzc29yaWVzL3NpbmdsZXQuaHRtbA,," 
    ["product"] => string(2) "22" 
    ["related_product"] => string(0) "" 
    ["options_76_file_action"] => string(8) "save_new" 
    ["options"] => array(1) { 
    [77] => string(3) "251" 
    } 
    ["options_80_file_action"] => string(8) "save_new" 
    ["qty"] => string(1) "1" 
} 

Как вы могли заметить, я передаю 2 изображения. Теперь я пытаюсь сделать то же самое с моего пользовательского контроллера. Мне удается добавить продукт в корзину, но я не могу найти функцию, которая отвечает за сохранение файлов в заказе. Кто-нибудь знает, как Magento справится с этим? Благодаря Soipo

+0

нет никакой функции в родном Magento, чтобы сохранить файлов во время процесса saveOrder. Вы должны обрабатывать свой файл с помощью обычных php-функций/кода. – OSdave

+0

Привет OSdave, мне удалось сохранить файл без проблем, но я не могу сохранить имя в параметрах. Поэтому изображение не будет отображаться в кассе, и оно появится в обзоре заказов. – soipo

ответ

1

Я нашел этот код на блоге,

// the path of the file, relative to Magento base directory. 
// For example /media/image.jpg 
$image = "YOURFILE.JPG"; 
// the ID of the product 
$product_id = XXX; 

$product = Mage::getModel('catalog/product')->load($product_id); 

$cart = Mage::getModel('checkout/cart'); 
$cart->init(); 
$params = array(
'product' => $product_id, 
'qty' => 1, 
'options' => array(
12345 => array(
'quote_path' => $image, 
'secret_key' => substr(md5(file_get_contents(Mage::getBaseDir() . $image)), 0, 20)), 
) 
); 

$cart->addProduct($product, $params); 
$cart->save(); 

Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 

Для этого убедитесь, что массив выглядит следующим образом:

$title= $option['name']; 
       $image = DS."media".DS."logos".DS.$title; 
       $path = Mage::getBaseDir().$image; 

       $imgSize = getimagesize($path); 
       $size = filesize($path); 

       $array = array(
       'type' => "application/octet-stream", 
       'title' => $title, 
       'size' => $size , 
       'width' => $imgSize[0], 
       'height' => $imgSize[1], 
       'quote_path'=> $image, 
       'order_path'=> $image, 

       'secret_key' => substr(md5(file_get_contents($path)), 0, 20)); 

       $options[$key] = $array; 
Смежные вопросы