Magento-唯一引用了项目在一个页面结帐
-
16-10-2019 - |
题
商店我的工作是可下载的产品只。在结账时,如果我们有一本书的一个特定的属性设置我们送肥皂请求外部公司(为获得电子书的可下载的网址从外部公司)。我已经写了一个模块,以复盖 saveOrderAction
的 OnepageController.php
我已经创建了一个额外的数据库表,其中存储的信息有关的项目的可下载的网址,更新上 saveOrderAction
.
在结帐单标识不产生我已经创建了一个观察员检查了被保存的事件,在这找到了ID的当前的产品我更新的数据库表我创造的。
这问题我有现在是如何更新的可下载的网址用户点击下他们的可下载的产品部分的其客户的帐户。
在 DownloadController.php
我们发现的功能 linkAction
我认为这是所谓的时下载的按钮被点击了一个产品。在那里,我有 print_r
的 $linkPurchasedItem
可变的,它显示了一个 purchased_id
和 item_id
这似乎是独特的产品。
返回的可下载的网址,保存在数据库(在我定制的表格),并鉴于从外部公司我会需要更新数据库表,我已经创建了一些点插入'purchased_id'或'item_id'所在 DownloadController.php
在 linkAction
我可以运行的另一个数据库呼吁得到的权利可下载网址的产品这一功能是被称为。
因此,我的问题是:
- 在什么时候是的
purchased_id
和/或item_id
产生? - 它是可能得到他们的
OnepageController.php
? - 什么是最好的方式,以独特的识别每种产品在每个订单,在我的定义数据库表,以便我可以参照它在
DownloadController.php
?
谢谢你任何帮助。
解决方案
让我们把你的主要问题,以便:
1.在什么时候是的 purchased_id
和/或 item_id
产生?
既 purchased_id
和 item_id
都是内生成的 Mage_Downloadable_Model_Observer
从方法 saveDownloadableOrderItem
.该观察员是登记倾听事件 sales_order_item_save_commit_after
-这就是所谓的每一次一个以项目为保存和数据库的事务提交已完成。
具体行这个设定是-105*:
$linkPurchasedItem = Mage::getModel('downloadable/link_purchased_item')
->setPurchasedId($linkPurchased->getId())
->setOrderItemId($orderItem->getId());
这种情况发生之前刚刚产生的散列于下载链接。你会看到,它并没有明确设定 item_id
-事实上,它不是必要的,因为它是自动增量主键表格。
在摘要, ids设置后顺序的项目是成功保存的数据库,这意味着以本身也是保存。
2.它是可能得到他们的OnepageController.php?
因为订购的项目必须保存在了产生 purchased_id
, 答案是否定的。
3.什么是最好的方式,以独特的识别每种产品在每个订单,在我的定义数据库表,以便我可以参照它在DownloadController.php?
在很多相同的方式,如上所示,在该模型设定器 setOrderItemId
, 他们使用的销售订单的项目的身份以参考这一特定产品。你也应该使用这种策略。为了注射这个进自己的表,重写 Mage_Downloadable_Model_Observer
保存你自己的表并行存在的可下载的表格--否则你就必须复制的模式中阐明的那类做许多检查,以确保产品的类型标识是可下载,等等。
摘要:
你不打算以能够产生下载的链接,从你的肥皂服务,直到订单后完成。没有一个主要重构有没有办法访问 purchased_id
在Onepage.php.
*至少在CE1.8阿尔法/EE1.13.0.1