Pertanyaan Bagaimana cara menetapkan opsi kustom untuk mengetik "file" saat menambahkan produk ke keranjang di Magento?


Dengan menggunakan pengontrol sendiri, saya menambahkan produk ke keranjang Magento. Ini memiliki 3 pilihan kustom: 2 pilihan dropdown (warna dan ukuran) dan opsi file (desain). Kode yang menambahkan produk ke keranjang adalah

// obtain the shopping cart
$cart = Mage::getSingleton('checkout/cart');

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

// do some magic to obtain the select ids for color and size ($selectedSize and $selectedColor)
// ...

// define the buy request params
$params = array(
    'product'       => $productId,
    'qty'           => $quantity,
    'options'       => array(
        $customOptionSize->getId()  => $selectedSize,
        $customOptionColor->getId() => $selectedColor,

        // set the file option, but how? 
    ),
);

// add this configuration to cart
$cart->addProduct($product, $paramObject);
$cart->save();

// set the cart as updated
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

Pertanyaan saya adalah: Bagaimana cara melampirkan file tertentu ke opsi desain?

File telah dipindahkan ke sisi server (sebenarnya melalui permintaan). Namun, saya bisa mengunggah palsu jika ini diperlukan. Tapi sampai sekarang saya belum menemukan satu sumber informasi tentang pengaturan opsi file kustom ...

Tebakan terbaik saya dari tur melalui sumber Magento, adalah bahwa permintaan beli membutuhkan beberapa data tambahan (tidak dalam opsi, tetapi dalam objek params), seperti: option_123_file => sesuatu, tapi apa sebenarnya yang dibutuhkan saya tidak tahu namun. Bagian dari sumber Magento ini agak, uhh, tidak begitu lurus ke depan. Terima kasih atas bantuannya.


5
2017-12-10 13:04


asal


Jawaban:


Ok akhirnya menemukan ini. The params array membutuhkan entri khusus untuk memberi tahu opsi kustom dengan kunci "options_xx_file_action" apa yang harus dilakukan dengan file ('save_new' atau 'save_old'). Ini akan terlihat seperti:

$params = array(
    'product'       => $productId,
    'qty'           => $quantity,
    'options'       => array(
        $customOptionSize->getId()  => $selectedSize,
        $customOptionColor->getId() => $selectedColor,
    ),
    'options_'.$customOptionDesign->getId().'_file_action'=>'save_new',
);

Tentunya, Anda perlu menambahkan file ke permintaan posting (melalui form atau seperti itu). Nama file harus "options_xx_file". Misalnya, dalam kasus saya, $ _FILES saya terlihat seperti:

Array (
[options_108_file] => Array
    (
        [name] => i-like.png
        [type] => application/octet-stream
        [tmp_name] => C:\xampp\tmp\phpAAB8.tmp
        [error] => 0
        [size] => 6369
    )

)

2
2017-12-15 19:05