Здравствуйте!
Задача - вывести в xml минимальную цену каждой категории.
Получаю массив ID групп в $assocgroup, а дальше вывожу в assoc все данные по этой группе, но не понимаю как получить по каждой из этих групп минимальную цену.
foreach ($aShopGroups as $oShopGroup){
$oAssocShopGroupsXmlEntity->addEntity($oShopGroup->addForbiddenTags(array('text', 'description')));
}
Я нашёл метод addMinMaxPrice( ) для Shop_Controller_Show, однако он добавляет эти min_price и max_price для корня, а не локально для сущности assoc и его групп.
Окей, хорошо. По вашему намеку я получил минимальные цены групп, но минимальные цены всё равно выводятся в корне xml http://prntscr.com/il8ms5
Сделал цикл и вызвал для каждой группы чуть измененный код addMinMaxPrice.
Задача: в конце цикла поменять addEntity у контроллера магазина именно на сопутствующие группы в assoc узле. Объясните этот момент.
foreach ($assocgroup as $group) {
$iCurrentShopGroup = intval($group);
$aSubGroupsID = $Shop_Controller_Show->fillShopGroup($oShop->id, $group); // добавляем текущую группу в массив
$aSubGroupsID[] = $group;
Однако я не понимаю почему так, ведь везде на форуме вижу такую конструкцию: добавляется группа через entity следом за ней идёт entity для элемента. У меня же всё также написано, просто группа изначально берётся из цикла foreach, а не вызывается через Core::factory('Core_Xml_Entity')
Вы же просто повторили моё сообщение от 01.03.2018. Посмотрите внимательно. Вот вставил еще этот вариант написания http://prntscr.com/iq4loo. В XML нету min_price http://prntscr.com/iq4mhs. Посмотрите скриншоты. В этом и проблема, что при таком написании данные в XML не попадают, хотя должны.
Ускорение сайтов / Любые работы по сайту / Обращайтесь в nivaks-studio.ru
nikolajgromkov,
полагаю причина более, чем банальная. Данная группа, как объект, выводится в контроллере в общем списке групп, когда она там добавляется, то вызывается метод clearEntities() и все добавленные дочерние элементы удаляются. Чтобы этого избежать, можно сделать следующий финт ушами:
// Получим уже другой объект
$oCloneShopGroup = clone $oShopGroup;
// Установим ему прежний ID и добавим дочерний элемент
$oCloneShopGroup
->id($oShopGroup->id)
->addEntity(
Core::factory('Core_Xml_Entity')
->name('min_price')
->value(floor($rows['min']))
);