Pregunta

He añadido algunos campos personalizados en el formulario de usuario de registro y me descubren que son enviados de vuelta, empaquetado en un elemento de formulario de tipo "contenedor". Mi código tiene que manejar todo tipo de diferentes campos de registro personalizado.

¿Cómo debería analizar estos objetos y extraer los campos de ellos? Debería mirar en las matrices y qué puedo esperar encontrar allí?

Me parece que no puede encontrar ninguna documentación buena en estos objetos.

Editar:

Un campos regulares recibidos a través de registro de usuario podría tener este aspecto:

name
... (Array, 10 elements)
#type (String, 9 characters ) textfield
#title (String, 10 characters ) Username
#maxlength (Integer) 60
#required (Boolean) TRUE
#attributes (Array, 1 element)
class (Array, 1 element)
0 (String, 8 characters ) username
#default_value (String, 0 characters )
#access (Boolean) TRUE
#weight (Integer) -10
#fb_registration_field (String, 4 characters ) name

una forma de contenedores miradas por ejemplo de esta manera:

field_birtyday
... (Array, 6 elements)
#type (String, 9 characters ) container
#attributes (Array, 1 element)
#weight (String, 1 characters ) 7
#tree (Boolean) TRUE
#language (String, 3 characters ) und
und (Array, 13 elements)
0 (Array, 12 elements)
#entity_type (String, 4 characters ) user
#bundle (String, 4 characters ) user
#field_name (String, 14 characters ) field_birtyday
#language (String, 3 characters ) und
#field_parents (Array, 0 elements)
#columns (Array, 2 elements)
0 (String, 5 characters ) value
1 (String, 6 characters ) format
#title (String, 8 characters ) Birthday
#description (String, 0 characters )
#required (Boolean) FALSE
#delta (Integer) 0
#weight (Integer) 0
value (Array, 16 elements)
#entity_type (String, 4 characters ) user
#bundle (String, 4 characters ) user
#field_name (String, 14 characters ) field_birtyday
#language (String, 3 characters ) und
#field_parents (Array, 0 elements)
#columns (Array, 2 elements)
0 (String, 5 characters ) value
1 (String, 6 characters ) format
#title (String, 8 characters ) Birthday
#description (String, 0 characters )
#required (Boolean) FALSE
#delta (Integer) 0
#weight (Integer) 0
#type (String, 9 characters ) textfield
#default_value (NULL)
#size (String, 2 characters ) 60
#maxlength (String, 3 characters ) 255
#attributes (Array, 1 element)
#theme (String, 25 characters ) field_multiple_value_form | (Callback) field_multiple_value_form();
#field_name (String, 14 characters ) field_birtyday
#cardinality (String, 1 characters ) 1
#title (String, 8 characters ) Birthday
#required (Integer) 0
#description (String, 0 characters )
#prefix (String, 42 characters ) <div id="field-birtyday-add-more-wrapper">
#suffix (String, 6 characters ) </div>
#max_delta (Integer) 0
#after_build (Array, 1 element)
0 (String, 30 characters ) field_form_element_after_build | (Callback) field_form_element_after_build();
#language (String, 3 characters ) und
#field_parents (Array, 0 elements)
¿Fue útil?

Solución

Se debe utilizar $form_state['values'] para manejar datos de usuario presentadas, no $form.

Otros consejos

No hay documentación bien en esa forma porque es dinámico, cualquier módulo puede implementar hook_form_alter () y gire completamente al revés. En el ejemplo, se añade el nombre directamente por user.module mientras field_birthday es un campo y los campos están construidos de una manera que permite que se muestren varias veces si es necesario. Es por eso que son un recipiente y sólo dentro de ellos es el elemento de forma real.

Suponiendo que se desea analizar la forma real, y no la respuesta, usted tiene que ir a través del formulario de forma recursiva. La función element_children () puede ayudarle con ese. Devuelve las llaves de todos los elementos de la forma debajo de la que pasó a esa función.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top