0

倉庫受け取り(プラグインオプション)を選択した後、Magentoユーザーに指示を与えるスクリプトに取り組んでいます。私はすでに残りを構築しています。success.phtml(ウェアハウスID)で呼び出す必要のある変数が1つ欠けているだけです。変数は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

ページで print_r の代わりに var_export を使用して $items を列挙してみてください。

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

これにより、結果が得られます。Items は、配列ではなく、より多くのオブジェクトが取り込まれたオブジェクトであり、そのように扱う必要があります。使ってみて

$itemId = $item->getStockId();

また

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

どちらも同じことを達成します。

参考までに.. debug() 関数は、関連する情報と、すべての mage オブジェクトで使用するための magento に組み込まれている情報を表示します。

編集:これを試してください:

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 に答える