Как объединить две сущности?

#
Как объединить две сущности?
Добрый день! Есть такой простой код


if (Core::moduleIsActive('shop'))
{
   $Current_Shop_Controller = Core_Page::instance()->object;
   
   $shop_id = Core_Array::get(Core_Page::instance()->widgetParams, 'shopId');
   $xsl = Core_Array::get(Core_Page::instance()->widgetParams, 'xsl');
   $limit = Core_Array::get(Core_Page::instance()->widgetParams, 'limit');   

   $oShop_Producer_Controller_Show = new Shop_Producer_Controller_Show(
      Core_Entity::factory('Shop', $shop_id)
   );
   $Shop_Producers_Show = new Shop_Controller_Show(
      Core_Entity::factory('Shop', $shop_id)
   );



   $Shop_Producers_Show
        ->addEntity(
        Core::factory('Core_Xml_Entity')
        ->name('current_group')->value(intval($Current_Shop_Controller->group))
        );

   $Shop_Producers_Show
      ->xsl(
         Core_Entity::factory('Xsl')->getByName($xsl)
      )
      ->groupsMode('all')
      ->group(TRUE)
      ->limit($limit)
      ->show();
}


Как мне в объект $Shop_Producers_Show добавить всех производителей, которые хранятся в $oShop_Producer_Controller_Show? Непонятен сам синтаксис данного действия. Заранее спасибо за ответ!
Модератор
#
Re: Как объединить две сущности?
Kolan777,
данные в контроллере показа не хранятся, контроллер их выбирает. В случае, если вам нужно просто добавить в контроллер показа магазина производителей, то просто получите их и добавьте контроллеру:

<?php

if (Core::moduleIsActive('shop'))
{
   //$Current_Shop_Controller = Core_Page::instance()->object;

   $shop_id = Core_Array::get(Core_Page::instance()->widgetParams, 'shopId');
   $xsl = Core_Array::get(Core_Page::instance()->widgetParams, 'xsl');
   $limit = Core_Array::get(Core_Page::instance()->widgetParams, 'limit');  

   $oShop = Core_Entity::factory('Shop', $shop_id);

   // Если вам нужен $Current_Shop_Controller, то его и используйте, а следующее 3 строчки удалите
   $oShop_Controller_Show = new Shop_Controller_Show($oShop);

   // Массив производителей
   $aShop_Producers = $oShop->Shop_Producers->findAll();

   $oNode = Core::factory('Core_Xml_Entity')
      ->name('shop_producers');

   foreach ($aShop_Producers as $oShop_Producer)
   {
      $oNode->addEntity(
         $oShop_Producer->clearEntities()
      );
   }

   // Добавляем новый узел контроллеру
   $oShop_Controller_Show->addEntity($oNode);

   $oShop_Controller_Show
     ->xsl(
       Core_Entity::factory('Xsl')->getByName($xsl)
     )
     ->groupsMode('all')
     ->group(TRUE)
     ->limit($limit)
     ->show();
}


если вам нужно использовать тот контроллер показа, что создается в настройках ТДС, то $oShop_Controller_Show = new Shop_Controller_Show($oShop); просто уберите.
#
Re: Как объединить две сущности?
Правильно ли я понял, что создавая класс new Shop_Producer_Controller_Show и вытягивая производителей из new Shop_Controller_Show - я получаю один и тот же список производителей из одноименного справочника?
Модератор
#
Re: Как объединить две сущности?
Kolan777 писал(а):
Правильно ли я понял, что создавая класс new Shop_Producer_Controller_Show и вытягивая производителей из new Shop_Controller_Show

как это вообще связано? Как вы вытягиваете, покажите.
Авторизация