Membuat masalah pelanggan secara programatik

13

Saya ingin membuat beberapa pelanggan secara terprogram dan saya memiliki masalah ketika saya ingin menyimpan ID situs web.

Saya memiliki beberapa ID situs web:

0 => admin
1 => germany
2 => hungary
3 => romania

Ini kode saya:

 $customer = Mage::getModel("customer/customer");
 $customer->setWebsiteId(3);
 $customer->setStoreId(1);
.....
 $customer->save();

Ketika saya menyimpan seorang pelanggan saya mendapatkan Adminnilai yang dipilih dari drop-down situs web . Nilai apa pun yang saya berikan ke ID situs web (seperti 12321) saya mendapat Adminnilai. Mengapa

Terima kasih.

Attila Naghi
sumber

Jawaban:

0

Bisakah Anda mencoba dengan kode ini:

//If you know store id
$storeId = 'id';
$store = Mage::getModel('core/store')->load($storeId); // Mage::app()->getStore($storeId);
if($store && $store->getId()) {
    $customer = Mage::getModel("customer/customer");
    $customer->setStore($store);
}


//->setStore reference:app/code/core/Mage/Customer/Model/Customer.php
/**
 * Set store to customer
 *
 * @param Mage_Core_Model_Store $store
 * @return Mage_Customer_Model_Customer
 */
public function setStore(Mage_Core_Model_Store $store)
{
    $this->setStoreId($store->getId());
    $this->setWebsiteId($store->getWebsite()->getId());
    return $this;
}
osrecio
sumber
Saya mendapatkan pesan kesalahan ini: Kesalahan fatal: Tidak tertangkap Mage_Core_Exception: ID situs web pelanggan harus ditentukan saat menggunakan lingkup situs web
Attila Naghi
1
Anda mencoba memuat pelanggan melalui Email? Masalah ini disebut dalam: app / code / core / Mage / Pelanggan / Model / Sumber Daya / Customer.php: 212 + 0- Silakan baca: inchoo.net/magento/programming-magento/…
osrecio
0

Ini adalah contoh kode saya dan Anda harus menetapkan ID situs web 2 kali. Jangan tanya kenapa. Mungkin seseorang akan memberi Anda solusi yang lebih baik tetapi yang ini cocok untuk saya:

 $customer->setWebsiteId(1);
 $customer->setStoreId(5);
 $customer->setData(.....)

 $customer->save();

 $customer->setConfirmation(null);
 $customer->setWebsiteId(1); 
 $customer->save();
Attila Naghi
sumber
0

Coba kode ini

$websitesArray = array(0 => "admin",
                1 => "germany",
                2 => "hungary",
                3 => "romania");
foreach($websitesArray as $websiteId => $websiteName) {
    $website = Mage::getModel('core/website')->load($websiteId);
    if($website->getId()) {
        $customer = Mage::getModel("customer/customer");
        $customer->setWebsiteId($website->getId())
                    ->setFirstname('John')
                    ->setLastname('Doe')
                    ->setEmail('[email protected]')
                    ->setPassword('somepassword');

        try{
            $customer->save();
        }
        catch (Exception $e) {
        }       
    }
}

Catatan :

Buka sisi admin System > configuration > Customers > Customer Configuration > Account Sharing Optionsdan setel Per WebsitebidangShare Customer Accounts

Abdul
sumber