Перейти к содержимому


Фотография
- - - - -

Обновление корзины


Лучший Ответ SmetDenis , 26 June 2013 - 06:44

Сделайте внутри параметров материала флаг, который будете проверять, чтобы не попасть в рекурсию.

Грубо говоря так.
 

if ($item->getParams()->get('no_recursion', 0) == 1) {
    return null;
}
$this->app->table->item->save($item);
В нужный момент установите/снимите флаг
$item->getParams()->set('no_recursion', 1)
Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 2

#1 skiF

skiF

Отправлено 25 June 2013 - 14:05

Еще вопрос:

допустим, я обновляю Item и мне нужно изменить только одно из полей, которое находится в колонке elements и идентификатор элемента я знаю.

 

Т.е. по сути, это к предыдущему моему вопросу:

 

Как сделать, чтобы при изменении Item в зависимости от изменения одного из полей(Оплачен/Неоплачен) менялось бы еще поля для basketitems в elements и добавляло или удалял массив order_info.

 

В моем случае, я добавляю в jbevent.item в saved() процедуру перезаписи данного массива через item->save(), но получается ситуация, что скрипт зацикливается, т.е. он в jbevent.item в saved() создает новый массив, но при попытке выполнить родительский метод save() , он опять попадает в jbevent.item в saved() и получаем бесконечную рекурсию.

 

 


  • 0

#2 SmetDenis

SmetDenis

Отправлено 26 June 2013 - 06:44   Лучший Ответ

Сделайте внутри параметров материала флаг, который будете проверять, чтобы не попасть в рекурсию.

Грубо говоря так.
 
if ($item->getParams()->get('no_recursion', 0) == 1) {
    return null;
}
$this->app->table->item->save($item);
В нужный момент установите/снимите флаг
$item->getParams()->set('no_recursion', 1)

  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 skiF

skiF

Отправлено 26 June 2013 - 12:06

Сделайте внутри параметров материала флаг, который будете проверять, чтобы не попасть в рекурсию.

Грубо говоря так.
 

if ($item->getParams()->get('no_recursion', 0) == 1) {
    return null;
}
$this->app->table->item->save($item);
В нужный момент установите/снимите флаг
$item->getParams()->set('no_recursion', 1)

 

Действительно, сработало.

 

Понятно, что метод довольно топорный, но другого пока не нашел.


  • 0




Click to return to top of page in style!