노드에서 필드 컬렉션을 어떻게로드합니까?


72

필드 컬렉션이 몇 개인 노드가 있습니다.

node_load()출력을 보면 다음과 같습니다.

[field_rich_text_group] => Array
        (
            [und] => Array
                (
                    [0] => Array
                        (
                            [value] => 6
                        )

                    [1] => Array
                        (
                            [value] => 7
                        )

                    [2] => Array
                        (
                            [value] => 8
                        )

                )

        )

entity_id가 6, 7, 8 등인 컬렉션에 포함 된 필드 데이터를 실제로로드하는 데 어떤 API 함수를 사용할 수 있습니까?

답변:


88

도! 필드 수집 모듈을 살펴 봤어야합니다.

entity_load('field_collection_item', array($item_id))

1
비슷한 솔루션을 찾고 있습니다. 출력을 어떻게 작성하여 렌더링 된 배열에 배치합니까? 감사
스완

이러한 항목에 대한 레이아웃을 작성하기 위해 많은 사용자 정의 함수를 작성했습니다. 안타깝게도 렌더링 가능한 배열이 아닌 HTML을 반환합니다. 렌더링 가능한 배열을 사용하는 것이 좋지만 요점을 완전히 명확하게 알 수는 없습니다 (그럴만 한 이유가 있다고 확신하지만 공명하는 설명을 찾지 못했습니다).
저스틴

감사. 필드 선택은 실제로 양식과 출력을 완화하는 데 유용하지만 사용자 정의 쿼리와 관련하여 entity_metadata_wrapper를 사용하여 중첩 배열로 뛰어 들어야하는 것처럼 보입니다.
스완

오 야, 나는 조밀 한 배열을 내가 필요한 것으로 바꾸는 래퍼를 썼다.
저스틴

entity_load ()는 "엔티티"에 고유 한 노드 세트를 리턴하며 노드와 함께 사용자 정의 필드도 가져옵니다. 사용자 필드와 엔티티 필드를 어떻게 구별합니까? 단서가 있습니까?
Raj Pawan Gumdal

38

동일한 트릭을 수행하는 래퍼 함수도 있습니다.

field_collection_item_load($id, $reset = FALSE)

또는 의견에 따라 다음을 사용하십시오.

field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)

여러 모음을로드하려면 (예 : 추가 버튼 이있는 경우 )


5
위의 @ vasiliy-grotov의 답변에 따라을 사용 field_collection_item_load_multiple($ids = array(), $conditions = array(), $reset = FALSE)하여 여러 모음을로드 할 수 있습니다 (예 : "더 추가"btn이있는 경우).
mediaashley 2017

21

올바른 개정판을로드하려면 field_collection_field_get_entity ()를 사용해야합니다.

사용법 예 :

$node = node_load(1);
$items = field_get_items('node', $node, 'field_fc');
foreach ($items as $item) {
 $fc = field_collection_field_get_entity($item);
 // Do something.
}

1
필드 컬렉션에 지정된 날짜 필드를 얻는 방법은 무엇입니까? 나는 다음을 사용했다. $ item = field_collection_field_get_entity ($ itemid); print $ item-> field_course_starts_on [ 'und'] [0] [ 'safe_value']; 그러나 값이 인쇄되지 않습니다.
harikris

고마워 상수가 발생했습니다 경고 : array_flip () : STRING 및 INTEGER 값만 뒤집을 수 있습니다! ... item_load () 사용하면 문제가 해결되었습니다.
Naidim

11

엔티티 API 모듈 entity_metadata_wrapper에서 사용할 수 있습니다 .

$node_wrapper = entity_metadata_wrapper('node', $node);
$field_collection = $node_wrapper->field_rich_text_group[0]->value();
dpm($field_collection);

모든 컬렉션을 반복 할 수도 있습니다.

$node_wrapper = entity_metadata_wrapper('node', $node);
foreach ($node_wrapper->field_rich_text_group as $field_collection_wrapper) {
  $field_collection = $field_collection_wrapper->value();
  dpm($field_collection);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.