Skip to content

Tạo customer trong magento

Ngoài việc sử dụng web form có sẵn của Magento để tạo Customer, chúng ta vẫn có thể tự tạo ra 1 Customer bằng code. Đây là 1 ví dụ đơn giản về việc tạo Customer, qua đó có thể áp dụng để viết các chức năng import hàng loạt Customer hay Social Login.

Mặc dù magento có 3 cách để tạo customer thông qua form:
– Form đăng ký ở trang Customer Register
– Form tại trang Checkout
– Và tạo account trong trang Admin
Tuy nhiên trong 1 vài trường hợp mà bạn không thể sử dụng những cách đó(như là muốn nghiên cứu thêm, hay import hàng loạt customer, hay tạo thêm extension mới với chức năng tạo customer …), chúng ta có thể sử dụng đoạn code sau để tạo.
Để tạo đc 1 customer thì nhất định phải có đủ những thông tin bắt buộc: Store, Website Id, First name, Last name, Email, Password

$websiteId = Mage::app()->getWebsite()->getId();
$store = Mage::app()->getStore();

// Dữ liệu cần thiết để tạo 1 customer
$customerData = array(
	'store'         => $store,
	'website_id'    => $websiteId,
	'firstname'     => 'Johnny',
	'lastname'      => 'Smart',
	'email'         => '[email protected]',
	'password'      => 'johnny123'
);

$customer = Mage::getModel("customer/customer");
$customer->setData($customerData);
try{
	$customer->save();
	var_dump('Complete. Customer ID is: ' . $customer->getId());
}
catch (Exception $e) {
	Mage::logException($e);
}

Ngoài ra chúng ta có thể thêm vào 1 số thông tin khác cho customer như là: Group Id, Prefix, Suffix, Middle name

// Thêm các thông tin khác cho customer
$customerDataMore = array(
	'store'         => $store,
	'website_id'    => $websiteId,
	'firstname'     => 'Johnny',
	'lastname'      => 'Smart',
	'email'         => '[email protected]',
	'password'      => 'johnny123',

	'group_id'      => '2',  // group id xem trong admin hoặc database
	'prefix'        => 'Mr',
	'suffix'        => 'AAA',
	'middlename'    => 'Ohio'
);

Cũng như các thông tin trên, ta có thể thêm địa chỉ cho customer luôn bằng cách tạo ra 1 address mới và set customer_id (id của customer vừa mới tạo) cho address đó là được:

// Tạo address cho customer
$addressData = array(
	'firstname'     => $customer->getFirstname(), // Sử dụng tên của customer vừa mới tạo
	'lastname'      => $customer->getLastname(),
	'country_id'    => 'VN',
	'postcode'      => '10000',
	'city'          => 'Ha Noi',
	'telephone'     => '999999999',
	'fax'           => '555555555',     // Cái này không bắt buộc
	'company'       => 'JohnnySmart',
	'street'        => 'Doi Can',
	'is_default_billing'    => 1,
	'is_default_shipping'   => 1,
	'save_in_address_book'  => 1
);

$address = Mage::getModel("customer/address");
$address->setData($addressData)
    ->setCustomerId($customer->getId())  
    ;
// Bắt buộc phải dùng hàm setCustomerId chứ ko truyền theo kiểu dữ liệu vào trong biến $addressData được vì trong hàm này ngoài set customer_id ra còn lưu cả parent_id nữa.
// Tham khảo thêm tại Mage_Customer_Model_Address::setCustomerId($id)

try{
	$address->save();
	var_dump('Complete. Customer ID is: ' . $address->getId());
}
catch (Exception $e) {
	Mage::logException($e);
}

Sau khi chạy xong đoạn code kia chúng ta sẽ vào Admin để kiểm tra lại:

Published inCodingPHP

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *