it-swarm-vi.com

Làm cách nào để tải bộ sưu tập trường từ một nút?

Tôi có một nút có một vài bộ sưu tập trường trên đó.

Khi tôi nhìn vào đầu ra node_load(), tôi thấy:

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

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

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

                )

        )

Tôi có thể sử dụng chức năng API nào để thực sự tải dữ liệu trường có trong bộ sưu tập có thực thể là 6, 7, 8, v.v.?

73
Justin

Đừng! Tôi nên nhìn vào mô-đun bộ sưu tập trường:

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

Ngoài ra còn có một hàm bao bọc thực hiện cùng một mẹo:

field_collection_item_load($id, $reset = FALSE)

hoặc theo nhận xét, sử dụng:

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

để tải nhiều bộ sưu tập (ví dụ: nếu bạn có nút Thêm nút ).

40
Vasiliy Grotov

field_collection_field_get_entity () nên được sử dụng để tải bản sửa đổi chính xác.

Ví dụ sử dụng:

$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.
}
21
jonhattan

Bạn có thể dùng entity_metadata_wrapper từ mô đun API thực thể :

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

Bạn cũng có thể lặp tất cả các bộ sưu tập:

$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);
}
11
milkovsky