Bobo
Bobo

Reputation: 9163

how to get customer'e email right right after registration?

I am new to Magento and PHP. I use the following line to get the email, which works fine except in the case a customer just registered. Any suggestions? Thanks.

 $userEmail = Mage::getSingleton('customer/session')->getCustomer()->getEmail();

Upvotes: 2

Views: 530

Answers (2)

ShaunOReilly
ShaunOReilly

Reputation: 2206

I assume that this code runs before the customer object data was saved propperly.

There is a line of code callled: in the OnePageCheckout and it does the following:

/**
     * Involve new customer to system
     *
     * @return Mage_Checkout_Model_Type_Onepage
     */
    protected function _involveNewCustomer()
    {
        $customer = $this->getQuote()->getCustomer();
        if ($customer->isConfirmationRequired()) {
            $customer->sendNewAccountEmail('confirmation', '', $this->getQuote()->getStoreId());
            $url = Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail());
            $this->getCustomerSession()->addSuccess(
                Mage::helper('customer')->__('Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.', $url)
            );
        } else {
            $customer->sendNewAccountEmail('registered', '', $this->getQuote()->getStoreId());
            $this->getCustomerSession()->loginById($customer->getId());
        }
        return $this;
    }

If the customer is just registering, not using the checkout process, then there is a different function using the request parameters like Anton said:

/app/code/core/Mage/Customer/Block/Form/Register.php

/**
 * Restore entity data from session
 * Entity and form code must be defined for the form
 *
 * @param Mage_Customer_Model_Form $form
 * @return Mage_Customer_Block_Form_Register
 */
public function restoreSessionData(Mage_Customer_Model_Form $form, $scope = null)
{
    if ($this->getFormData()->getCustomerData()) {
        $request = $form->prepareRequest($this->getFormData()->getData());
        $data    = $form->extractData($request, $scope, false);
        $form->restoreData($data);
    }

    return $this;
}

Upvotes: 2

Anton S
Anton S

Reputation: 12750

you can get it from request parameters directly?

Upvotes: 1

Related Questions