2010-08-05 10 views
6

Estoy escribiendo un script que automáticamente importa usuarios en magento. Aquí es un fragmento de código:¿Cómo confirmar programáticamente un usuario en Magento?

$customer = Mage::getModel("customer/customer"); 
$customer->website_id = $websiteId; 
$customer->setStore($store); 

$customer->loadByEmail($riga[10]); 

echo "Importo ".$data[0]."\n"; 
echo " email :".$data[10]."\n"; 

$customer->setTaxvat($data[7]); 
$customer->lastname = $lastname; 
$customer->email =  $data[10]; 
$customer->password_hash = md5($data[0]); 

$customer->save(); 

El problema es que los usuarios se crean como "no confirmada", mientras que me gustaría que sean "confirmados".

he intentado con:

$customer->setConfirmation('1'); 

antes de la salvarlo, pero no funcionó. ¿Alguien sabe cómo confirmar al usuario?

Gracias!

Respuesta

15

Creo que setConfirmation() está esperando una clave de confirmación. Intenta pasar null y creo que funcionará?

Solo para aclarar:

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

debería obligar a confirmación.

+0

Eso lo hizo. :-) Simplemente me gustaría resaltar que al crear un cliente es importante guardar * antes * y * después * de configurar la clave de confirmación, como se señaló a destajo. – fdierre

4

Cuando creé cuentas, ¡ya estaban confirmadas, pero estaban deshabilitadas! Esto lo solucionó:

$customer->save(); 
$customer->setConfirmation(null); 
$customer->setStatus(1); 
$customer->save(); 
+0

Bienvenido a SO. Bien respondido, aunque vale la pena leer las respuestas existentes para ver si el problema ya se ha resuelto de manera similar. –

+0

No parece haber una propiedad de "estado" en el cliente, por lo que setStatus (1) no tiene sentido. – Saustrup

1

Guardar todo el modelo es costoso. Puede guardar solo el atributo de confirmación que es muy rápido:

$customer->setConfirmation(NULL); 
$customer->getResource()->saveAttribute($customer, 'confirmation'); 
Cuestiones relacionadas