Создать, Заметьте, в классе Mage Core Model App для функции run


глядя на класс app\code\core\Mage\Core\Model\App.php, имеем следующую функцию:

public function run($params)
    {
        $options = isset($params['options']) ? $params['options'] : array();
        $this->baseInit($options);
        Mage::register('application_params', $params);

        if ($this->_cache->processRequest()) {
            $this->getResponse()->sendResponse();
        } else {
            $this->_initModules();
            $this->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS);

            if ($this->_config->isLocalConfigLoaded()) {
                $scopeCode = isset($params['scope_code']) ? $params['scope_code'] : '';
                $scopeType = isset($params['scope_type']) ? $params['scope_type'] : 'store';
                $this->_initCurrentStore($scopeCode, $scopeType);
                $this->_initRequest();
                Mage_Core_Model_Resource_Setup::applyAllDataUpdates();
            }

            $this->getFrontController()->dispatch();
        }
        return $this;
    }

, Чтобы добавить event/observer используем следующий код:

<events>
  <EVENT_TO_HOOK>
    <observers>
      <module>
        <type>singleton</type>
        <class>company_module_model_observer</class>
        <method>methodToCall</method>
      </module>
    </observers>
  </EVENT_TO_HOOK>     
</events>

, Какое событие следует добавить, чтобы посмотреть, функция run класс Mage_Core_Model_App?

Author: Jonatan Ribeiro dos Santos, 2014-02-07

1 answers

Не удается наблюдать функция run класс Mage_Core_Model_App и через события.

Единственное событие вызвало в этом классе был application_clean_cache. Проверьте полный список в http://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/

Но список выше стоит версия 1.8 - это событие, описанное выше, уже не существует.

События через метод dispatchEvent. Например:

Mage::dispatchEvent('application_clean_cache', array('tags' => $tags));

(источник: http://freegento.com/doc/d8/d98/_app_8php-source.html#l01084)

В код функции run app\code\core\Mage\Core\Model\App.php, опубликовано в вопрос, мы видим, что нет вызова Mage::dispatchEvent. Это означает, что событие не срабатывает, и, следовательно, нет события, чтобы быть замеченным и поймали там.

Альтернативой расширить этот класс и сделать override функция.

, Или то (хотя и не рекомендуется) изменить код функции в Magento, добавив съемки события dispatchEvent...

 1
Author: J. Bruni, 2014-02-07 20:02:00