Création de clients par programme


13

Je souhaite créer des clients par programme et j'ai un problème lorsque je souhaite enregistrer l'ID du site Web.

J'ai plusieurs identifiants de site Web:

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

Voici mon code:

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

Lorsque j'ai enregistré un client, je reçois la Adminvaleur sélectionnée dans le menu déroulant du site Web . Quelle que soit la valeur que je donne au site Web Id (comme 12321), j'ai obtenu la Adminvaleur. Pourquoi ?

Merci.

Réponses:


0

Pouvez-vous essayer avec ce code:

//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;
}

Je reçois ce message d'erreur: Erreur fatale: Uncaught Mage_Core_Exception: l'ID du site Web du client doit être spécifié lors de l'utilisation de la portée du site Web
Attila Naghi

1
Vous essayez de charger le client par e-mail? Ce problème est référencé dans: app / code / core / Mage / Customer / Model / Resource / Customer.php: 212 + 0- Veuillez lire: inchoo.net/magento/programming-magento/…
osrecio

0

Ceci est l'exemple de mon code et vous devez définir l'ID du site Web 2 fois. Ne me demandez pas pourquoi. Peut-être que quelqu'un vous donnera une meilleure solution mais celle-ci fonctionne pour moi:

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

 $customer->save();

 $customer->setConfirmation(null);
 $customer->setWebsiteId(1); 
 $customer->save();

0

Essayez ce code

$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('jd1@ex.com')
                    ->setPassword('somepassword');

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

Remarque :

Accédez au côté administrateur System > configuration > Customers > Customer Configuration > Account Sharing Optionset définissez le Per WebsitechampShare Customer Accounts

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.