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.

Attila Naghi
la source

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;
}
osrecio
la source
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();
Attila Naghi
la source
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('[email protected]')
                    ->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

Abdul
la source