Magento - получить класс, который отправил событие

0

Есть ли способ получить класс, в котором событие было отправлено в Magento?

Вы можете получить класс, который вызывается с использованием приведенного ниже кода, но есть ли противоположная функция?

$observer->getEvent()->getBlock();
Теги:
magento
magento-1.9

1 ответ

2
Лучший ответ

К сожалению, я не думаю, что есть способ сделать это. События в Magento отправляются через Mage::dispatchEvent()

Определение этой функции можно найти в app/Mage.php по строке 445

/**
 * Dispatch event
 *
 * Calls all observer callbacks registered for this event
 * and multiple observers matching event name pattern
 *
 * @param string $name
 * @param array $data
 * @return Mage_Core_Model_App
 */
public static function dispatchEvent($name, array $data = array())
{
    Varien_Profiler::start('DISPATCH EVENT:'.$name);
    $result = self::app()->dispatchEvent($name, $data);
    Varien_Profiler::stop('DISPATCH EVENT:'.$name);
    return $result;
}

И, как вы видите, в Magento нет ничего, заставляющего класс, который посылает событие, чтобы что-то сказать о себе.

Ничего больше в lib/Varien/Event.php или в lib/Varien/Event/Observer.php которые являются классами, связанными с шаблоном event/observer в Magento.

Хотя иногда событие может дать вам $this как его данные, как в этом примере:

./app/code/core/Mage/Wishlist/Model/Wishlist.php:222:  
Mage::dispatchEvent('wishlist_item_add_after', array('wishlist' => $this));

Но в дизайне приложения нет ничего, что бы вы не знали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню