0

こんにちは、情報を入力した後、チェックアウトボタンがクリックされる前に、チェックアウトページに新しい顧客を保存したいと思います。オブザーバーまたはその他の方法を使用して、データベースに新しい顧客を作成して保存する可能性はありますか?

4

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