【问题标题】:Get access to $item->getNumberOfDownloadsUsed() function on Download.php访问 Download.php 上的 $item->getNumberOfDownloadsUsed() 函数
【发布时间】:2017-11-16 12:18:32
【问题描述】:

我需要获取购买和使用的下载次数,这是$item 对象上可用的两种方法。但我不能在我正在工作的文件上实例化$item

app/code/core/Mage/Downloadable/Helper/Download.php

在这个文件上,我需要检索已购买下载的购买次数和使用次数。

我还在尝试获取订单 ID 或至少链接哈希,以使用购买的唯一 ID 来识别购买/使用的下载次数。

例如,我试试这个:

Mage::getModel('downloadable/link_purchased_item')
            ->load($this->getOrderItem()->getOrder()->getId(), 'order_id');

但是$this->getOrderItem()Download.php 文件中不可用。我正在尝试这个:

Mage::getModel('downloadable/link_purchased_item')->getCollection()
            ->addFieldToFilter('order_item_id', $this->getOrderItem()->getId());

但显然getOrderItem() 不可用。

致命错误:在第 135 行的 /[...]/app/code/core/Mage/Downloadable/Helper/Download.php 中调用未定义的方法 Mage_Downloadable_Helper_Download::getOrderItem()

但我可以使用客户单例来检索客户数据,如下所示:

$cliente = Mage::getSingleton('customer/session')->getCustomer();

所以在这个文件上我可以访问其他方法,但我无法获得以下详细信息:

  • 购买的下载次数
  • 使用的下载次数
  • 订单 ID 或链接哈希 ID。

所以,我请求如何在与文件下载相关的Download.php 上获取当前订单实例和/或当前链接实例。

谢谢!

【问题讨论】:

  • 这个功能不应该是模型的一部分吗? (而不是帮助者)
  • 你检查过这个吗 - stackoverflow.com/a/13957878/4349218
  • @OfirBaruch 也许可以。但我不知道如何将该信息传递给助手,这是我需要获取数据的地方。
  • @Piyush 是的,但是在我写的文件上,它没有返回任何值。对象为空,那是因为我无法访问助手上的数据。因为我没有$linkPurchasedItem 的实例
  • 您可能不同意,但我鼓励您寻找不同的方法,因为助手只是一组没有关系或面向数据的函数。 HTML 元素的助手,税收计算的助手,处理图像的助手 - 很好,但是当你开始将它与模型数据集成时......它打破了 MVC 架构。 (只是我的看法)

标签: php magento e-commerce magento-1.9


【解决方案1】:

您做错了,如果不设置/声明它们,您将无法获得像 $this->getOrderItem() 这样的任何对象。当您尝试在帮助程序中获取 order_iditem_id 时,您正在从客户可下载产品重定向的自定义页面上使用它们。这是你必须做的事情

步骤 - 1

来自客户我的可下载产品,在重定向 URL 中,您必须将该产品 order_iditem_id 作为参数传递。您可以从下面的代码中获取它们

$orderId = $_item->getPurchased()->getOrderId();
$itemId = $_item->getId();

步骤-2

现在在您的模板文件中,使用您的帮助函数时,将 order_iditem_id 传递给方法参数。如下代码

$orderId = $this->getRequest()->getParam('order_param');
$itemId = $this->getRequest()->getParam('item_param');

//Your helper function
Mage::helper('your_helper')->yourMethod($orderId, $itemId);

步骤 - 3

在您的帮助文件中,您可以使用以下代码

public function yourMethod($orderId, $itemId)
{
    $linkPurchasedItem = Mage::getModel('downloadable/link_purchased_item')
            ->load($orderItem, 'order_id');


    $LinkPurchaseOrderItemId = Mage::getModel('downloadable/link_purchased_item')->getCollection()
            ->addFieldToFilter('order_item_id', $itemId);
}

注意:不要对核心文件进行任何更改,而是覆盖它们

【讨论】:

    猜你喜欢
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2023-03-23
    • 1970-01-01
    • 2012-07-12
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多