Posted by Daniel Munoz Herrera on August 16, 2011 at 3:07pm
bueno amigos druparelos tengo aquí un pequeño problema estoy utilizando el modulo addressfield para añadir información a un usuario que por medio de un web services voy creando. Quiero añadir su información personal la cual maneja el modulo addressfield. el problema que surge es que ahún no logro guardar estos datos. Espero tener una respuesta de ustedes.
les dejo el codigo que estoy usando.
<?php
$new_user_save = array(
'name' => $username,
'pass' => $password,
'mail' => $var->email,
'status' => 1,
'roles' => array( $o_rol->rid => $var->role ),
'init' => $var->email,
);
// save user
$usertemp = user_save( NULL, $new_user_save );
if ( !empty($usertemp)) {
$return = new stdClass();
$return->id = $usertemp->uid;
$edit = (array) $usertemp;
$edit["field_address_first_name"]["und"]["0"]["value"] = $var->firstName;
$edit["field_address_last_name"]["und"]["0"]["value"] = $var->lastName;
user_save($usertemp, $edit);
_user_mail_notify('register_admin_created', $usertemp);
return $return;
?>
Comments
.
En general , es bueno indicar la versión de Drupal que usas para que sea más fácil ayudar.
Como el módulo que mencionas sólo existe para Drupal 7, supongo que esa es la versión que estás usando.
La documentación de user_save está aquí:
user_save para drupal 7
El código del post tiene algunos detalles, como que por ejemplo falta el cierre de paréntesis de llave para "if ( !empty($usertemp)) {".
Sería bueno copiar la función completa que estás haciendo y decir cuál es el comportamiento esperado y cuál es el comportamiento actual.
Creo que
<?php$edit["field_address_first_name"]["und"]["0"]["value"] = $var->firstName;
?>
<?php$edit["field_address_first_name"] = $var->firstName;
?>
Para estar seguro de cómo se arma el $edit para tu caso particular, sería bueno user un print_r($edit) como primera línea de la funcion user_save (después la borras no más)
saludos
estructura
gracias francort por el tip del print_r no se me habia ocurrido logre establecer la estructura del field_address y en realidad estaba cerca. en fin la estrucutura es la siguiente:
<?php
$new_user_save = array(
'name' => $username,
'pass' => $password,
'mail' => $var->email,
'status' => 1,
'roles' => array( $o_rol->rid => $var->role ),
'init' => $var->email,
'field_address' => array(
"und" => array(
"0" => array(
"first_name" => $var->firstName,
"last_name" => $var->lastName,
"country" => "DE",
"xnl" => $xnl
))),
);
// save user
$usertemp = user_save( NULL, $new_user_save );
?>
problema solucionado?
Excelente, ¿funciona ahora? (supongo que sí, pero nunca se sabe :D)
La idea es dejar documentada en el mismo hilo la solución del problema(o la confirmación del método usado), para que cuando llegue otra persona con el mismo problema pueda leer la solución
saludos
Disculpen estimados...
Deseo ocupar el espacio para dar a conocer el problema que tengo, ya que de problemas parece que se habla acá...
La página me arroja el siguiente error al ingresar en ella:
PDOException: SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine: SELECT b.*, ml.*, n.type AS type, n.title AS title FROM {book} b INNER JOIN {node} n ON b.nid = n.nid INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE (n.nid IN (:db_condition_placeholder_0, :db_condition_placeholder_1, :db_condition_placeholder_2, :db_condition_placeholder_3, :db_condition_placeholder_4)) AND (n.status = :db_condition_placeholder_5) ORDER BY ml.weight ASC, ml.link_title ASC; Array ( [:db_condition_placeholder_0] => 3 [:db_condition_placeholder_1] => 8 [:db_condition_placeholder_2] => 9 [:db_condition_placeholder_3] => 85 [:db_condition_placeholder_4] => 104 [:db_condition_placeholder_5] => 1 ) en book_get_books() (línea 371 de /home/camaraci/public_html/modules/book/book.module).
Y no comprendo qué debo hacer para solucionarlo...
La versión que estoy usando es la 7.7...
Curiosamente sucede que luego de un rato el sitio funciona correctamente, pero, pasado algún tiempo vuelve a fallar...
Por su puesto, desde ya agradezco a quien me pueda ayudar...
Saludos...
user_save o modulo addressfield
En realidad este es un hilo de discusión cuyo título es "user_save con modulo addressfield" y el problema que planteas no parece tener relación con el tema :D
Deberías crear un nuevo hilo de discusión para plantear tu problema.
Cuando crees el hilo de discusión, trata de darle un título que identifique el problema que tienes (supongo que algo así como "error en instalación de Drupal 7" o "error en módulo Book"...)
En lo posible, escribe toda la información acerca del problema y cómo se generó (cuál es la versión de Drupal? cuándo aparece el mensaje? has instalado algún módulo contribuido? estabas haciendo un módulo? estabas modificando código de Drupal? sucedió durante la instalación? es la primera vez que instalas Drupal en ese servidor? etc).
En general, describir todos los pasos que seguiste para llegar a tener ese error, para que alguien pueda reproducirlo y así poder ayudarte.
saludos