Magento 1.7 コミュニティ エディションでは、Customer モジュールの AccountController をオーバーライドしました。createPost メソッドを変更して、顧客名、電子メール、およびパスワードのみを保存し、JSON 出力を返すようにして、ajax を使用して呼び出すようにしました。
コントローラーが正しく動作していることをテストするために、メソッドを直接リクエストします。つまり、次のようにします。
www.mysite.com.au/customer/account/createpost/?firstname=john&lastname=smithemail=john.smith@mydomain.com&password=xxxxxx&confirmation=xxxxxx
私が抱えている問題は、$customer->save()
が呼び出され、例外がスローされ ( Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS
)、「顧客の電子メールは既に存在します」というメッセージが に遡ることapp/code/core/Mage/Customer/Model/Resource/Customer.php
です。例外にもかかわらず、顧客レコードが挿入されます。
そのため、Magento は顧客を 2 回救おうとしています。メソッドの先頭でリターンを出すと 、2 つのMage_Customer_Model_Resource_Customer:_beforeSave(Varien_Object $customer)
顧客レコードが追加されます。
どんなアイデアでも大歓迎です。
編集:これは、Windows 7 PC で実行されている PHP の問題であることに気付きました (BitNami WAMP スタックをインストールしました)。コードを Linux ボックスにコピーしましたが、障害は発生していません。