php - 如何在magento中的购物车中添加自定义数据

标签 php magento

我想将服装数据保存在购物车项目中,我已检查数据已保存在数据库中,但当我获取时,它将返回null

我有添加事件,用于将服装数据添加到购物车中。

Observer.php

public function checkoutCartProductAddAfter(Varien_Event_Observer $observer){
    try {
        $data = $this->_getRequest()->getPost();
        $item = $observer->getEvent()->getQuoteItem();
        $item->setData('customize_data', $data['customize_data']);
        $item->setData('customize_image', $data['customize_image']);
        $item->save();
    }
    catch (Exception $e) {
        Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
    }
}

我想更改购物车页面中的图像,因此我创建了以下文件。

<?php
class ProductCustomizer_ProductCustomizer_Block_Checkout_Cart_Item_Renderer extends Mage_Checkout_Block_Cart_Item_Renderer{
    public function getProductThumbnail()
    {
        $customize_data = $this->getItem()->getData('customize_data');
        $customize_image = $this->getItem()->getData('customize_image');
        Mage::log('customize_data');
        Mage::log($customize_data);
        Mage::log('customize_image');
        Mage::log($customize_image);
        if (!empty($customize_image)) {
            return $customize_image;
        } else {
            return parent::getProductThumbnail();
        }
    }
}

我在 system.log 文件中收到以下日志

2017-01-02T06:38:29+00:00 DEBUG (7): customize_data
2017-01-02T06:38:29+00:00 DEBUG (7): 
2017-01-02T06:38:29+00:00 DEBUG (7): customize_image
2017-01-02T06:38:29+00:00 DEBUG (7): 

最佳答案

您无需在项目表中添加新列即可完成此操作,

Observer.php

public function checkoutCartProductAddAfter(Varien_Event_Observer $observer){
    try {
            $data = Mage::app()->getRequest()->getPost();

            $item = $observer->getQuoteItem();

            $additional_info = $item->getadditional_info();
            $additional_info = unserialize($additional_info);

            $additional_info['customize']['customize_data'] = $data['customize_data'];
            $additional_info['customize']['customize_image'] = $data['customize_image'];

            $item->setAdditionalInfo(serialize($additional_info));

            $item->save();
        }
        catch (Exception $e) {
            Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
        }
}

购物车页面:

class ProductCustomizer_ProductCustomizer_Block_Checkout_Cart_Item_Renderer extends Mage_Checkout_Block_Cart_Item_Renderer{
    public function getProductThumbnail()
    {
     $additional_info = $this->getItem()->getData('additional_info');
     $additional_info = unserialize($additional_info);
     if(isset($additional_info['customize']) && $additional_info['customize']){
        Mage::log('customize_data');
        Mage::log($additional_info['customize']['customize_data']);
        Mage::log('customize_image');
        Mage::log($additional_info['customize']['customize_image']);

        return $additional_info['customize']['customize_image'];
     }
     return parent::getProductThumbnail();
   }
}

关于php - 如何在magento中的购物车中添加自定义数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41422438/

相关文章:

php - Codeigniter - 如果用户在数据库中创建了条目,则仅允许用户从数据库中删除

php - 使用 PHP 计算唯一行而不使用 MYSQL (UNIQUE)

Magento 如何显示完整的错误消息而不是截断一个

php - 如何在 REST API 中使用 session

php - Laravel Eloquent : Inverse of Many To Many (Polymorphic)

Magento - 访问客户的愿望 list

php - 数据库查询不同结果

mysql - 类别页面无法正常工作 Magento 2 包含超过 1300 万种产品

php - 如何使用事件观察者模型获取事件 sales_order_place_after 的订单号?

php - MySQL 基准测试