it-swarm-korea.com

컨테이너 양식 요소를 어떻게 처리해야합니까?

등록 사용자 양식에 일부 사용자 정의 필드를 추가했으며 "컨테이너"유형의 양식 요소로 패키지되어 다시 전송되는 것을 발견했습니다. 내 코드는 모든 종류의 다른 사용자 정의 레지스터 필드를 처리해야합니다.

이 객체를 구문 분석하고 필드에서 필드를 추출하려면 어떻게해야합니까? 배열을 살펴 봐야하며 거기서 무엇을 찾을 수 있습니까?

이 객체들에 대한 좋은 문서를 찾지 못하는 것 같습니다.

편집하다:

사용자 등록을 통해받은 일반 필드는 다음과 같습니다.

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

양식 컨테이너는 예를 들어 보입니다. 이처럼 :

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)
6
grm

$form_state['values'] 제출 된 사용자 데이터를 처리하고 $form.

4
sun

동적이기 때문에 해당 양식에 대한 좋은 문서는 없습니다. 모든 모듈은 hook_form_alter ()를 구현하고 완전히 뒤집을 수 있습니다. 예를 들어, 이름은 user.module에 의해 직접 추가되는 반면 field_birthday는 필드이고 필드는 필요한 경우 여러 번 표시 될 수있는 방식으로 빌드됩니다. 그렇기 때문에 이들이 컨테이너이고 그 안에 만 실제 양식 요소가 있습니다.

응답이 아닌 실제 양식을 구문 분석하려는 경우 양식을 재귀 적으로 수행해야합니다. element_children () 함수가 도움이 될 수 있습니다. 그것은 당신이 그 함수에 전달한 것 아래의 모든 폼 요소의 키를 반환합니다.

0
Berdir