0

未保存の Mage_Sales_Model_Order オブジェクトの配列をリクエスト間で渡す必要があります。それらをチェックアウト/セッションに保存しようとしましたが、DB に保存されていないようです。さらに、その後、たとえばコア/セッションに追加されたすべてのデータも同様に消えます。私のコード:

モデル内:

//$orders is an array of orders
Mage::getSingleton('checkout/session')->setOrders($orders);
Mage::getSingleton('core/session')->setIsMultishipping(true);

// ...

コントローラーで:

$this->_redirectUrl($url);

最初に、注文はシリアライズ可能なオブジェクトではないと思ったので、インタープリターでこれを試しました:

$serialized = serialize(Mage::getModel('sales/order')->load(1111));

そして、想定どおりに文字列を返しました。次に、シリアル化された順序がセッションを格納するための最大フィールド サイズに適合するかどうかを確認しました。

> echo strlen($serialized);
11465

これは、セッション データをデータベースに格納するための mediumblob フィールド タイプを考慮した小さな値です。

Magento がデータベースへのセッションの保存に黙って失敗するさまざまな理由を知っていますか?

ありがとう。

4

1 に答える 1

0

注文がデータベースに保存される前に、注文が依存していたオブジェクトが変更/削除されたため、シリアル化は黙って失敗しました。

于 2013-06-24T08:02:38.897 に答える