こんにちは、情報を入力した後、チェックアウトボタンがクリックされる前に、チェックアウトページに新しい顧客を保存したいと思います。オブザーバーまたはその他の方法を使用して、データベースに新しい顧客を作成して保存する可能性はありますか?
質問する
1549 次
2 に答える
0
このオブザーバー イベントcheckout_controller_onepage_save_shipping_methodを使用できます。このイベントは、顧客が配送方法から続行したときに発生します。
見積もりオブジェクトから顧客の請求先/配送先住所を取得できます。
于 2013-07-31T04:22:12.613 に答える
0
配送イベントの保存でトリガーされるオブザーバーを作成し、顧客を保存します。
例えば:
app/etc/modules/ に Yournamespace_Yourmodulename.xml を作成します。
<?xml version="1.0"?>
<config>
<modules>
<Yournamespace_Yourmodulename>
<active>true</active>
<codePool>local</codePool>
</Yournamespace_Yourmodulename>
</modules>
app/code/local/Yournamespace/Yourmodulename/etc/config.xml 内
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Yournamespace_Yourmodulename>
<version>1.0.0</version>
</Yournamespace_Yourmodulename>
</modules>
<global>
<events>
<checkout_controller_onepage_save_shipping_method>
<observers>
<auto_register_shipping>
<type>singleton</type>
<class>Yournamespace_Yourmodulename_Model_Observer</class>
<method>autoRegisterBilling</method>
</auto_register_shipping>
</observers>
</checkout_controller_onepage_save_shipping_method>
</events>
</global>
</config>
app/code/local/Yournamespace/Yourmodulename/Model/Observer.php 内
<?php
class Yournamespace_Yourmodulename_Model_Observer {
public function autoRegisterBilling($evt){
if(!Mage::helper('customer')->isLoggedIn()){
$data = $evt->getEvent()->getControllerAction()->getRequest()->getPost('billing', array());
$customer = Mage::getModel("customer/customer");
$email = $data['email'];
$websiteId = Mage::app()->getWebsite()->getId();
$store = Mage::app()->getStore();
$pwd = $data['customer_password'];
$customer->setWebsiteId(Mage::app()->getStore()->getWebsiteId())->loadByEmail($email);
if (!$customer->getId()) {
//Code begins here for new customer registration
$customer->website_id = $websiteId;
$customer->setStore($store);
$customer->firstname = $data['firstname'];
$customer->lastname = $data['lastname'];
$customer->setEmail($email);
$customer->setPassword($pwd);
$customer->sendNewAccountEmail('confirmed');
$customer->save();
}
}
}
}
于 2013-07-30T06:39:09.180 に答える