Вызов метода модели и хуки

#
Вызов метода модели и хуки
Делаю так:
class Shop_Order_Observer
{
   public function onCallgetAmountExtended($object)
   {
      $sum = 0;

      $aOrderItems = $object->Shop_Order_Items->findAll();
      $aPrices = [0];
      foreach($aOrderItems as $oOrderItem) {
         $sum += $oOrderItem->getAmount();
         $aPrices[] = intval($oOrderItem->getPrice());
      }

      $no_discount = intval(max($aPrices) / 10);

      $discount_amount = $sum / 100 * 10 - $no_discount;

      return $sum - $discount_amount;
   }

   public function onCallprintAmountExtended($object)
   {
      echo sprintf("%.2f %s", $object->getAmountExtended(), $object->Shop_Currency->name);
      return TRUE;
   }
}

Core_Event::attach('shop_order.onCallgetAmountExtended', array('Shop_Order_Observer', 'onCallgetAmountExtended'));
Core_Event::attach('shop_order.onCallprintAmountExtended', array('Shop_Order_Observer', 'onCallprintAmountExtended'));



В формах заказов магазина добавляю дополнительное вычисляемое поле printAmountExtended. Получаю у всех заказов "0.00 руб". Что я делаю не так?

И ещё. Почему в onCallprintAmountExtended выводится информация только через echo, а не через return? Это так и надо?
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Вызов свойства модели и хуки
А ещё var_dump($this->_shopOrder->getAmountExtended()); вызванный в Shop_Payment_System_Handler26 возвращает NULL. Может ещё там его как то объявить надо?
Email: roman.fov@gmail.com Skype: roman-fov
Модератор
#
Re: Вызов метода модели и хуки
Roman Fov писал(а):
В формах заказов магазина добавляю дополнительное вычисляемое поле printAmountExtended. Получаю у всех заказов "0.00 руб". Что я делаю не так?

судя по рублям хук отрабатывает, а вот с onCallgetAmountExtended() у вас видимо проблемы, нули он возвращает, проверяйте и отлаживайте код.

Roman Fov писал(а):
И ещё. Почему в onCallprintAmountExtended выводится информация только через echo, а не через return? Это так и надо?

на сколько я могу судить, через return все должно корректно работать.

Roman Fov писал(а):
А ещё var_dump($this->_shopOrder->getAmountExtended()); вызванный в Shop_Payment_System_Handler26 возвращает NULL. Может ещё там его как то объявить надо?

начните с простой отладки, распечатайте внутри onCallgetAmountExtended() просто
echo $object;
и посмотрите что там у вас.
#
Re: Вызов метода модели и хуки
Цитата:
судя по рублям хук отрабатывает, а вот с onCallgetAmountExtended() у вас видимо проблемы, нули он возвращает, проверяйте и отлаживайте код.


Вот такой вариант тоже не работает:
class Shop_Order_Observer
{
   public function onCallgetAmountExtended($object)
   {
      return 111;
   }

   public function onCallprintAmountExtended($object)
   {
      echo $object->getAmountExtended() . 'asdf';
      return TRUE;
   }
}

Core_Event::attach('shop_order.onCallgetAmountExtended', array('Shop_Order_Observer', 'onCallgetAmountExtended'));
Core_Event::attach('shop_order.onCallprintAmountExtended', array('Shop_Order_Observer', 'onCallprintAmountExtended'));


Выводит только "asdf".

Цитата:
на сколько я могу судить, через return все должно корректно работать.


Если сделать так то не выводиться вообще ничего

   public function onCallprintAmountExtended($object)
   {
      return $object->getAmountExtended() . 'asdf';;
   }
Email: roman.fov@gmail.com Skype: roman-fov
#
Re: Вызов метода модели и хуки
Цитата:
начните с простой отладки, распечатайте внутри onCallgetAmountExtended() просто
echo $object;
и посмотрите что там у вас.


вот что выдаёт:
   Model 'shop_order',
fields: shop_country_id=0,
shop_country_location_id=0,
shop_country_location_city_id=0,
shop_country_location_city_area_id=0,
postcode=,
address=,
surname=,
name=,
patronymic=,
company=,
phone=8 (643) 322-22-22,
fax=,
email=,
description=1437549903,
shop_delivery_condition_id=0,
shop_delivery_id=0,
shop_payment_system_id=0,
shop_currency_id=1,
shop_order_status_id=0,
tin=,
kpp=,
shop_id=3,
siteuser_id=0,
acceptance_report=996,
vat_invoice=,
datetime=2015-07-22 10:25:03,
paid=,
payment_datetime=,
system_information=,
canceled=,
user_id=21,
invoice=996,
status_datetime=2015-07-22 10:25:03,
guid=46279A77-88F7-A806-EBD4-F2D0C4BB2990,
delivery_information=,
ip=127.0.0.1,
unloaded=0,
deleted=0,
id=996int(0)
Email: roman.fov@gmail.com Skype: roman-fov
Модератор
#
Re: Вызов метода модели и хуки
Roman Fov,
"Все правильно, все сходится, ребеночек не наш." Причина в том, что при вызове событий не возвращаются значения, которые были возвращены функцией-обработчиком события. Возврат функцией обработчиком FALSE прерывает выполнение следующих обработчиков этого события, если они были добавлены. Мы подготовили решение для версии 6.5.0, обратитесь в поддержку, мы вышлем Вам файлы для тестирования.
Авторизация