Как загрузить коллекцию полей из узла?

У меня есть узел, на котором есть несколько коллекций полей.

Когда я смотрю на вывод node_load(), я вижу:

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

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

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

                )

        )

Какую функцию API я могу использовать для фактической загрузки данных поля, содержащихся в коллекции, которая имеет entity_id из 6, 7, 8 и т. д.?

68 голосов | спросил Justin 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 12 Sep 2011 00:45:14 +0400 2011, 00:45:14

4 ответа


85

Doh! Я должен был посмотреть в полевом модуле:

entity_load('field_collection_item', array($item_id))
ответил Justin 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 12 Sep 2011 00:48:22 +0400 2011, 00:48:22
36

Существует также функция-обертка, которая делает тот же трюк:

field_collection_item_load($id, $reset = FALSE)

или в соответствии с комментарием, используйте:

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

для загрузки нескольких коллекций (например, если у вас есть кнопки Добавить больше ).

ответил Vasiliy Grotov 3 J000000Tuesday12 2012, 21:29:10
20

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.
}
ответил jonhattan 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 01 Sep 2013 16:15:56 +0400 2013, 16:15:56
11

Вы можете использовать entity_metadata_wrapper из модуля Entity API :

$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);
}
ответил milkovsky 2 +04002013-10-02T11:35:50+04:00312013bEurope/MoscowWed, 02 Oct 2013 11:35:50 +0400 2013, 11:35:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132