7

「Firecheckout」と呼ばれる Templates Master によるカスタム チェックアウト拡張機能を使用します。それが関連しているかどうかはわかりませんが、言及する必要があると考えました。「配送方法を指定してください」という理由で、取引に失敗したというメールをたまに見かけます。これがどのように発生するかを追跡するのに長い時間を費やしましたが、道に迷っています。問題を再現するために考えられることはすべて試しました。私が行うことの組み合わせ (カートからのアイテムの追加/削除、配送オプションを変更するクーポン コードの追加/削除、モバイル サイトとデスクトップ サイトの切り替えなど) に応じて、チェックアウト ページが配送方法のオプションが選択されていません。ただし、注文を送信しようとすると、配送方法セクションに「」という赤いメッセージがすぐに表示されます。

コードを検索すると、 _validateメソッドのTM_FireCheckout_Model_Service_Quote ( Mage_Sales_Model_Service_Quoteを拡張) クラスでエラー メールがトリガーされていることがわかりました。

$method= $address->getShippingMethod();
$rate  = $address->getShippingRateByCode($method);
if (!$this->getQuote()->isVirtual() && (!$method || !$rate)) {
    Mage::throwException($helper->__('Please specify a shipping method.'));
}

この場合、$methodまたは$rateのいずれかが null または false であると思いますが、なぜ/どのように考えられるのでしょうか? これが起こらないようにするために私にできることはありますか?FireCheckout の_validateメソッドと親クラスの_validateメソッドの唯一の違いは、どのフィールドが必須と見なされるかです。住所オブジェクトは一切変更されないため、その後のgetShippingMethodおよびgetShippingRateByCodeの呼び出しは、デフォルトのインストールと同じになります。

必要に応じて追加の詳細を提供できます。私は基本的に、そのエラーを引き起こす可能性のあるものと、それを再現する方法を理解しようとしています。これにより、最終的に、最初にエラーを引き起こしている穴にパッチを当てることができます.

ありがとう!

4

2 に答える 2

0

私は以前に似たようなものに遭遇しましたが、Firecheckoutではありませんでした。しかし、それは@LennonのようなAppthaのOnestepcheckoutExtensionでもありました。簡単に言えば、データを破壊したのはJavaScript処理の不一致でした。明確な答えはありませんが、フォームの検証とチェックアウトフォームでのデータの保存の間に何が起こるかを調べることをお勧めします。

調査を開始するためにできることは、FFでFirebugを起動し、コンソールを監視して、データがまだ渡されているかどうかを確認することです。controler_action_predispatchイベントで次のことを行うための簡単なオブザーバーモジュールを作成することもできます。

$request = $observer->getControllerAction()->getRequest();
Mage::log(var_export($request->getParams(),true));

..または、チェックアウトルート内のコントローラーファイルを直接編集します。あなたのボートを浮かぶものは何でも。

ログを有効にしtail -f var/logs/system.logます。リクエストがログと一致することを確認する必要があります。それが私の問題を解決し始めた方法です。

繰り返しになりますが、これは「コピーパスタ」の修正や問題の根本に向けられたチュートリアルではなく、実際の経験から問題を診断した方法についての私の経験を共有しています。

モジュールはhttp://www.silksoftware.com/magento-module-creatorで非常にすばやく作成できます。

于 2012-12-24T13:29:11.463 に答える