0

我正在编写一个脚本,该脚本将在选择仓库取货(插件选项)后为 Magento 用户提供指导。我已经建立了其余的。我只是缺少一个我需要在success.phtml(仓库ID)上调用的变量。该变量通过 stock_id 与订单相关联。

这会产生一个数组:我成功地使用 $order 来提取脚本所需的其余信息。

$order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
$items = $order->getItemsCollection();

此数组的简化版本:可以使用 print_r($items->getData()); 打印

Array
(
    [0] => Array
        (
            [item_id] => 223
            [stock_id] => 15
            [base_discount_refunded] => 
        )

)

当我尝试提取我想要的数据时:

echo $items[0]['stock_id']; //the page breaks here and stops the page abruptly... 

分页符和应该发生的任何逻辑都将被忽略。什么会导致这个?我尝试了在其他类似数组中调用的制动变量。我的测试都没有复制分页。为什么这个特定的页面会破坏页面而不是返回 15?

4

2 回答 2

1

您可以尝试在页面中使用 var_export 而不是 print_r 枚举 $items ,这样您就可以看到它们真实存在的样子:

foreach ($items as $item)
{
   var_export($item->debug());
}

这将为您提供结果。Items 是一个填充了更多对象的对象,而不是一个数组,应该这样对待。尝试使用

$itemId = $item->getStockId();

或者

$itemId = $item->getData('stock_id');

两者都完成同样的事情。

仅供参考.. debug() 函数显示相关信息,并且它内置于 magento 中,可与所有 mage 对象一起使用。

编辑:试试这个:

echo $items[0]->getData('stock_id');
于 2013-03-21T20:40:13.913 回答
1

嗯,$items不是一个数组,它是一个对象Mage_Sales_Model_Resource_Order_Item_Collection。这应该有效:

$data = $items->getData();
echo $data[0]['stock_id'];

但是使用集合的枚举接口,就像已经提到的那样,会更干净。看看http://alanstorm.com/magento_collections

您还应该检查您的 PHP 配置,以获取有关此类错误的更多信息。看看http://alanstorm.com/magento_exception_handling_developer_mode

于 2013-03-21T21:02:04.210 回答