Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento-使用observer在cart addAction上保存报价单地址_Magento_Magento 1.7 - Fatal编程技术网

Magento-使用observer在cart addAction上保存报价单地址

Magento-使用observer在cart addAction上保存报价单地址,magento,magento-1.7,Magento,Magento 1.7,我正在编写一个定制的Magento模块,它在产品页面上提供报价(基于外部API)。在我在产品页面上得到响应后,它会将响应中的一些信息添加到产品视图的表单中 目标是保存地址(以及其他一些东西,但这些东西现在可以在会话中)。地址需要保存到报价中,以便签出(onestepcheckout,免费版本)将自动填充(城市、州、邮政编码、国家、配送方式[其中有3种])中的值,并通过ajax加载报价(它已经在这样做) 我已经使用了一个观察者,观察了购物车事件。我填写地址并保存它。当我到达购物车页面或结帐页面时,

我正在编写一个定制的Magento模块,它在产品页面上提供报价(基于外部API)。在我在产品页面上得到响应后,它会将响应中的一些信息添加到产品视图的表单中

目标是保存地址(以及其他一些东西,但这些东西现在可以在会话中)。地址需要保存到报价中,以便签出(onestepcheckout,免费版本)将自动填充(城市、州、邮政编码、国家、配送方式[其中有3种])中的值,并通过ajax加载报价(它已经在这样做)

我已经使用了一个观察者,观察了购物车事件。我填写地址并保存它。当我到达购物车页面或结帐页面时,数据丢失了约4/5倍,sql表显示quote_地址在没有地址信息的情况下被保存,即使存在显式保存

我使用的观察者方法有:

checkout_cart_update_item_complete
checkout_cart_product_add_after
保存的代码是:(我尝试了地址、引号和购物车都不调用save(),结果相同,也不调用setQuote())

我想这很可能不是保存此信息的最佳位置,但我不太确定。我想知道是否有一个好位置可以在不覆盖整个控制器的情况下保存“添加到购物车”操作上的地址


非常感谢,如果我需要在Magento中澄清,请告诉我您可以在任何需要的地方创建自己的活动,但在这种情况下,您可以在事件后使用
结帐\购物车\产品\添加\来更新quore地址详细信息

这是同样的代码

$quote = Mage::getSingleton('checkout/session')->getQuote();

$billingAddress = Mage::getModel('sales/quote_address')
        ->setStoreId($storeId)
        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
        ->setCustomerId(('Your_Value_Here'))
        ->setCustomerAddressIpd(('Your_Value_Here'))
        ->setCustomer_address_id(('Your_Value_Here'))
        ->setPrefix(('Your_Value_Here'))
        ->setFirstname(('Your_Value_Here'))
        ->setMiddlename(('Your_Value_Here'))
        ->setLastname(('Your_Value_Here'))
        ->setSuffix(('Your_Value_Here'))
        ->setCompany(('Your_Value_Here'))
        ->setStreet(('Your_Value_Here'))
        ->setCity(('Your_Value_Here'))
        ->setCountry_id(('Your_Value_Here'))
        ->setRegion(('Your_Value_Here'))
        ->setRegion_id(('Your_Value_Here'))
        ->setPostcode(('Your_Value_Here'))
        ->setTelephone(('Your_Value_Here'))
        ->setFax(('Your_Value_Here'));
$quote->setBillingAddress($billingAddress);

$shippingAddress = Mage::getModel('sales/quote_address')
        ->setStoreId($storeId)
        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
        ->setCustomerId(('Your_Value_Here'))
        ->setCustomerAddressId(('Your_Value_Here'))
        ->setCustomer_address_id(('Your_Value_Here'))
        ->setPrefix(('Your_Value_Here'))
        ->setFirstname(('Your_Value_Here'))
        ->setMiddlename(('Your_Value_Here'))
        ->setLastname(('Your_Value_Here'))
        ->setSuffix(('Your_Value_Here'))
        ->setCompany(('Your_Value_Here'))
        ->setStreet(('Your_Value_Here'))
        ->setCity(('Your_Value_Here'))
        ->setCountry_id(('Your_Value_Here'))
        ->setRegion(('Your_Value_Here'))
        ->setRegion_id(('Your_Value_Here'))
        ->setPostcode(('Your_Value_Here'))
        ->setTelephone(('Your_Value_Here'))
        ->setFax(('Your_Value_Here'));

$quote->setShippingAddress($shippingAddress)
        ->setShipping_method('flatrate_flatrate')
        ->setShippingDescription($this->getCarrierName('flatrate'));


$quote->save();

这当然很复杂,但你做了一个很好的概述。欢迎!谢谢!我想给你一个很好的概述,我正在尝试做什么,所以有很多解释。我是堆栈溢出的狂热用户,所以我希望我做得很好。
$quote = Mage::getSingleton('checkout/session')->getQuote();

$billingAddress = Mage::getModel('sales/quote_address')
        ->setStoreId($storeId)
        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
        ->setCustomerId(('Your_Value_Here'))
        ->setCustomerAddressIpd(('Your_Value_Here'))
        ->setCustomer_address_id(('Your_Value_Here'))
        ->setPrefix(('Your_Value_Here'))
        ->setFirstname(('Your_Value_Here'))
        ->setMiddlename(('Your_Value_Here'))
        ->setLastname(('Your_Value_Here'))
        ->setSuffix(('Your_Value_Here'))
        ->setCompany(('Your_Value_Here'))
        ->setStreet(('Your_Value_Here'))
        ->setCity(('Your_Value_Here'))
        ->setCountry_id(('Your_Value_Here'))
        ->setRegion(('Your_Value_Here'))
        ->setRegion_id(('Your_Value_Here'))
        ->setPostcode(('Your_Value_Here'))
        ->setTelephone(('Your_Value_Here'))
        ->setFax(('Your_Value_Here'));
$quote->setBillingAddress($billingAddress);

$shippingAddress = Mage::getModel('sales/quote_address')
        ->setStoreId($storeId)
        ->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
        ->setCustomerId(('Your_Value_Here'))
        ->setCustomerAddressId(('Your_Value_Here'))
        ->setCustomer_address_id(('Your_Value_Here'))
        ->setPrefix(('Your_Value_Here'))
        ->setFirstname(('Your_Value_Here'))
        ->setMiddlename(('Your_Value_Here'))
        ->setLastname(('Your_Value_Here'))
        ->setSuffix(('Your_Value_Here'))
        ->setCompany(('Your_Value_Here'))
        ->setStreet(('Your_Value_Here'))
        ->setCity(('Your_Value_Here'))
        ->setCountry_id(('Your_Value_Here'))
        ->setRegion(('Your_Value_Here'))
        ->setRegion_id(('Your_Value_Here'))
        ->setPostcode(('Your_Value_Here'))
        ->setTelephone(('Your_Value_Here'))
        ->setFax(('Your_Value_Here'));

$quote->setShippingAddress($shippingAddress)
        ->setShipping_method('flatrate_flatrate')
        ->setShippingDescription($this->getCarrierName('flatrate'));


$quote->save();