프로그래밍 방식으로 문제를 일으키는 고객 만들기


13

프로그래밍 방식으로 일부 고객 을 만들고 싶습니다. 웹 사이트 ID를 저장하려고 할 때 문제가 있습니다.

여러 개의 웹 사이트 ID가 있습니다.

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

이것은 내 코드입니다.

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

고객을 저장 Admin하면 웹 사이트 드롭 다운 에서 선택한 값이 표시 됩니다 . 웹 사이트 ID (예 :)에 어떤 가치를 부여하든 가치를 12321얻었습니다 Admin. 왜 ?

감사.

답변:


0

이 코드로 시도해 볼 수 있습니까?

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

이 오류 메시지가 : 치명적인 오류 : catch되지 않은 Mage_Core_Exception을 : 웹 사이트의 범위를 사용하는 경우 고객의 웹 사이트 ID를 지정해야합니다
아틸라 Naghi을

1
이메일로 고객을로드하려고하십니까? 이 문제는 다음과 같습니다. app / code / core / Mage / Customer / Model / Resource / Customer.php : 212 + 0- 읽어보십시오 : inchoo.net/magento/programming-magento/…
osrecio

0

이것은 내 코드 샘플이며 웹 사이트 ID를 2 번 설정해야합니다. 이유를 묻지 마십시오. 어쩌면 누군가가 더 나은 솔루션을 제공 할 것이지만 이것은 나를 위해 작동합니다.

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

 $customer->save();

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

0

이 코드를 사용해보십시오

$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) {
        }       
    }
}

노트 :

관리자 측으로 이동하여 필드에 System > configuration > Customers > Customer Configuration > Account Sharing Options설정Per WebsiteShare Customer Accounts

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.