Использование хуков в REST API
Хуки позволяют получить дополнительную информацию об объектах, использовать ограничения и т.п.
Вывод информации об остатке товара на конкретном складе
Создадим data-атрибут вида dataWarehouse{ID-склада}, для этого напишем обработчик события onCallwarehouseApi модели магазина
Core_Event::attach('shop.onCallwarehouseApi', array('My_Shop_Observer', 'onCallwarehouseApi')); class My_Shop_Observer { static public function onCallwarehouseApi($object, $args) { // ID склада, информацию об остатке на котором добавлять $warehouse_id = 1; $oShop_Items = $object->Shop_Items; $oShop_Items ->queryBuilder() ->select('shop_items.*', array('SUM(shop_warehouse_items.count)', 'dataWarehouse' . $warehouse_id)) ->leftJoin('shop_warehouse_items', 'shop_warehouse_items.shop_item_id', '=', 'shop_items.id', array( array('AND' => array('shop_warehouse_items.shop_warehouse_id', '=', $warehouse_id)) ) ) ->groupBy('shop_items.id'); return $oShop_Items; } }
Вызов warehouseApi для магазина с номером 3 делаем следующим образом: GET /api/v1.0/shops/3/warehouseApi/
Вывод значений свойств для заказов при JSON-запросе
Метод toArray() моделей имеет хук modelname.onAfterToArray, которым можно расширить возвращаемые данные. Создадим обработчик события shop_order.onAfterToArray в котором вернем массив значений в индексе properties: * с версии 7.0.7
Core_Event::attach('shop_order.onAfterToArray', function($oShop_Order, $args) { $aReturn = $args[0]; $aPropertyValues = $oShop_Order->getPropertyValues(FALSE); foreach ($aPropertyValues as $oPropertyValue) { $aReturn['properties'][] = $oPropertyValue->toArray(); } return $aReturn; });
Вывод значений свойств для заказов при XML-запросе
Core_Event::attach('shop_order.onBeforeGetXml', function($oShop_Order, $args) { $aProperty_Values = $oShop_Order->getPropertyValues(TRUE, array()); // Add all values $oShop_Order->addEntities($aProperty_Values); });
Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.