Форма поиска

Не получается?

Не получается решить проблему с Друпалом?

Готовы помочь делом и советом. Стоимость часа - 500 руб.

Запросить помощь

Поделитесь ссылкой:

Программно добавить значение Field Collection

Есть сущность (например, тип материала) с полем типа Field Collection, состоящим из нескольких вложенных полей. Как программно добавить значение к нему?

Для примера, у нас есть сущность: заказ / order, а в ней - поле платежи / field_payments, имеющее неограниченное количество значений. Причем, каждый платеж / field_payments содержит несколько полей: дата / field_payment_date, автор / field_payment_author и т.д.

Сначала загрузим сущность, зная id заказа:

$orders = entity_load('order', array($pid));
$order = $orders[$pid];

Затем создадим еще одну сущность типа field_collection_item:

$collection = entity_create('field_collection_item', array('field_name' => 'field_payments'));

И скажем, что она относится к нашему заказу:

$collection->setHostEntity('order', $order);

Создадим wrapper для коллекции полей:

$fc_wrapper = entity_metadata_wrapper('field_collection_item', $collection); 

А дальше - зададим через него значения обычным способом и сохранимся:

$fc_wrapper->field_payment_date->set($date);
$fc_wrapper->field_payment_author->set($user->uid);
$fc_wrapper->field_payment_way->set($way);
$fc_wrapper->field_amount->set($amount);
$fc_wrapper->save();

Готово. В сущности заказ / order появилось новое значение поля платежи / field_payments. Если у вас не заказ, а node - все аналогично, только нужно поменять тип базовой сущности с order на node.

Полезна ли для вас эта информация?: 
4
Ваша оценка: Нет В среднем: 4 (2 голосов)

Размещение и поддержка сайтов на Drupal

Предлагаем услуги по размещению и поддержке сайтов, разработанных как в нашем бюро, так в других веб-студиях.

Мы готовы взять на себя все работы по поддержке вашего сайта или электронного магазина и гарантируем его доступность и безопасность.

Подробнее ...

Предметная фотосъемка

Выполним профессиональную фотосъемку вашей продукции, офиса, производства, участка или любых других объектов.

Оплата услуг

Оплатить услуги разработки, модернизации, поддержки и размещения сайтов можно любыми удобными вам способами как в интернете, так и оффлайн. Оформляются все бухгалтерские документы.

Оплата услуг