יש כל מיני מקרים שבהם נרצה להוסיף לקוחות ע"י קוד, לפעמים ייבוא לקוחות באופן גמיש או לחבר את הקוד למשקיף (observer) מסויים ולייבא ממערכת צד שלישי, בקיצור – הקוד הזה עזר לי הרבה פעמים.
אז קודם כל צריך ליצור אובייקט מסוג לקוח:
$customer = Mage::getModel("customer/customer");
לאחר מכן אנחנו שולפים את הקוד של האתר והחנות אליו אנחנו רוצים לשייך את הלקוח:
$websiteId = Mage::app()->getWebsite()->getId(); $store = Mage::app()->getStore();
קביעת הערכים לחשבון הלקוח:
$customer ->setWebsiteId($websiteId) ->setStore($store) ->setFirstname($firstname) ->setLastname($lastname) ->setEmail($email) ->setPassword($password) ->setDob($birthday) ->setGender($gender); // Male (1) or Female (2)
עכשיו שמירת האובייקט לDB:
try{ $customer->save(); $customer->setConfirmation(null); // confirm the account, AFTER it has been created $customer->setStatus(1); // enable the account, AFTER it has been created $customer->save(); } catch (Exception $e) { Zend_Debug::dump($e->getMessage()); }
קראנו לפונקציות setConfirmation וsetStatus כדי לגמור את השמירה לDB עוד לפני סיום הריצה הנוכחית כדי שהמערכת תיצור ID ללקוח שבו נשתמש כדי להוסיף כתובת ללקוח.
שמירת כתובת ללקוח
יצירת אובייקט כתובת לקוח:
$address = Mage::getModel("customer/address");
קביעת הערכים לכתובת הלקוח:
$customer_addres = array ( // billing address 'street' => 'Imber', 'street_number' => '86', 'address_info' => '1. Floor', 'city' => 'Petach Tikva', 'company' => 'Girit Interactiv', 'postcode' => '80636', 'country_id' => 'IL', 'telephone' => '+972 2 938 29 815', 'fax' => '+972 2 938 29 834' ); $address->setData($customer_address) ->setCustomerId($customer->getId()) ->setIsDefaultBilling('1') ->setSaveInAddressBook('1');
עכשיו שמירת האובייקט לDB:
try{ $address->save(); } catch (Exception $e) { Zend_Debug::dump($e->getMessage()); }
זהו!