Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара

#
Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара
Добрый день, коллеги!
Пытаюсь средствами API создать группу свойств товаров. Искал решение в гугле, в исходном коде системы, в обработчике формы добавления этих самых групп свойств, но там всё очень запутанно. Вот что в итоге получилось, но не работает:

   private function addGroupPropertyHostcms($sGroupPropertyName) {
      $oGroupProperty = Core_Entity::factory('Shop_Item_Property_List', $this->aParams['shop_id'])->Property_Dirs->getByName($sGroupPropertyName, FALSE);
      if (is_null($oGroupProperty)) {
         $oGroupProperty = Core_Entity::factory('Shop_Item_Property_Dir');
         $oGroupProperty->name = $sGroupPropertyName;
         $oGroupProperty->save();
      }
      return $oGroupProperty->id;
   }

И ещё вопрос: где можно получить весь перечень типов объектов для Core_Entity::factory?
lesnik512
Модератор
#
Re: Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара
1. У Shop_Item_Property_Dir нет свойства name. Есть:
id
shop_id
property_dir_id

Вы не тот объект создаете. Вам нужно работать с Property_Dir

2. См. API: http://www.hostcms.ru/api6/packages/HostCMS%206.html

Все что заканчивается на _Model можно создать через фабрику.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Re: Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара
Спасибо за информацию, попробую разобраться
lesnik512
#
Re: Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара
В итоге получилось так:
      $oPropertyDir = Core_Entity::factory('Property_Dir')->getByName($sPropertyDirName, FALSE);
      if (is_null($oPropertyDir)) {
         $oPropertyDir = Core_Entity::factory('Property_Dir');
         $oPropertyDir->name = $sPropertyDirName;
         $oPropertyDir->save();
         
         $oPropertyDir->Shop_Item_Property_Dir->shop_id = $this->aParams['shop_id'];
         $oPropertyDir->Shop_Item_Property_Dir->save();
      }
      return $oPropertyDir->id;
lesnik512
Модератор
#
Re: Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара
lesnik512,
замечание - Вы проверяете просто наличие раздела доп. св-в, при этом забывая:
1. Не указан уровень, т.е. на любом уровне вложенности.
2. Не проверяете на принадлежность раздела доп. св-в ничему, т.е. если свойства разделов товаров магазина:
$linkedObject = Core_Entity::factory('Shop_Item_Property_List', $shop_id);

$oPropertyDir = $linkedObject->Property_Dirs->getByName($sPropertyDirName, FALSE);
#
Re: Перечень всех типов объектов для Core_Entity::factory и создание групп свойств и свойств товара
да, точно. Спасибо
lesnik512
Авторизация