2011-03-27 2 views
3

값; 사용자는 하나만 채워야합니다.
두 번째 필드가 비어 있는지 확인하는 기능도 있습니다. Drupal 6 및 Drupal 7에서 필드 값을 얻고 설정하는 방법이 변경 되었습니까?는 프로그래밍 get 및 set 필드

편집 : 나는 지금 모듈을 편집하려고 .
예, 노드 필드에 대해 이야기하고 있습니다.
$ node 배열에는 노드에 추가 한 용어의 ID 만 있습니다. 신분증 명을 알기 위해 이름을 어떻게 얻을 수 있습니까? 당신이 CCK이 질문에 태그 때문에

+1

문제는 무엇인가? 필드의 값을 확인하는 방법에 대한 것입니다. 또는 수표를 구현하려면? 모듈 (이 부분)을 D6에서 D7으로 업그레이드하는 방법은 무엇입니까? – Haza

답변

7

, 나는 당신이 노드 필드로 작업하는 가정거야.

다른 ( Y)에 하나 개의 필드 (X )의 값을 복사하기 위해서는 Computed Field 모듈을 설치하고 Y의 값 의 값으로부터 계산된다 있도록 설정할 수 있습니다 X, 또는 다음과 같은 후크와 비슷한 뭔가 사용자 정의 모듈을 만들 수 있습니다 : 필드 X에서

이 후크 복사 모든 데이터 필드를 사용 Y :

을 16,
function mymodule_node_presave($node) { 
    $node->field_y = $node->field_x; 
} 

이 후크는 복사 필드 X의 첫 번째 인스턴스의 값은 필드하기 Y :

function mymodule_node_presave($node) { 
    $node->field_y[$node->language][0]['value'] = $node->field_x[$node->language][0]['value']; 
} 

당신은 당신의 데이터 구조로 $node->field_xprint_r$node->field_y 작업을 수행 할 수 있습니다 사용하는 필드 유형에 따라 다를 수 있습니다. 필드 중 하나가 비어 있는지 확인하려면 사용자 지정 함수를 호출하는 조건에 대입 문을 래핑 할 수 있습니다.

+0

필요한 데이터를 확인하기 위해 Devel 모듈을 사용하므로 print_r 함수에서 충돌 할 필요가 없습니다. – Povylas

2

하나의 좋은 방법 필드의 값을 찾기위한 현장 API에서 제공 field_get_items()을 사용하고 있습니다.

field_get_items($entity_type, $entity, $field_name, $langcode = NULL); 

장소 :

$ ENTITY_TYPE '노드'또는 '사용자', 같은인가

$ 엔티티 : 그것은 필드 값이 필요할의 엔티티,

$ FIELD_NAME : 필드 시스템 이름,

$의 langcode : 엔티티에 저장되는 언어는 선택 사항이며, 제공하지 않을 경우, field_get_items는 자동으로 발견 할 것이다.