Наблюдатель за созданием способа оплаты - PullRequest
0 голосов
/ 07 декабря 2011

В настоящее время я создаю модуль, который позволяет внутреннему пользователю управлять разрешенными для клиента способами оплаты. Magento Event / обозреватель очень помогает - все, что мне нужно сделать, чтобы клиенты хорошо зацепились этой системой и перенесли в мой код. Но мне также нужно подключить событие создания метода оплаты (регистрация нового модуля метода оплаты). Я знаю, что в Magento нет такого события (поправьте меня, если я ошибаюсь), но мне нужен обходной путь для достижения такой функциональности (хороший / правильный путь).

Итак, вот вопрос:

Каков наилучший (хороший / правильный) способ управления (подключить) событием создания метода оплаты (регистрация модуля оплаты) в Magento?

Извините за плохой язык ... Спасибо за ответы!

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Установка модуля происходит довольно рано при инициализации приложения;на самом деле, это происходит до того, как области событий будут проанализированы, поэтому нет никакого способа вызвать наблюдателя события.Смотри Mage_Core_Model_App::run().Обратите внимание, как loadAreaPart() (который запускает загрузку конфигурации наблюдателя событий) называется после _initModules() (в котором мы находим вызов установки модуля Mage_Core_Model_Resource_Setup::applyAllUpdates()).Поэтому стандартная диспетчеризация событий была бы бессмысленной.

С точки зрения общего дизайна приложения, я бы сказал, что использование управляемой событиями архитектуры Magento для этой цели - излишнее.При установке любого модуля вы обязательно касаетесь базы данных.Вместо того, чтобы общий наблюдатель просматривал все установки модулей, вы должны реализовать свой собственный класс настройки ресурсов, который простирается от Mage_Core_Model_Resource_Setup - это делают несколько основных модулей.В этом классе ресурсов пользовательской настройки вы можете выполнить любую задачу, для которой вы в настоящее время рассматриваете (отправка электронного письма, запись некоторой информации, запись дополнительной записи в БД и т. Д.).Теперь вам и вашим разработчикам будет необходимо потребовать, чтобы каждый новый платежный модуль использовал этот установочный ресурс для установки платежных модулей.

1 голос
/ 07 декабря 2011

Вы можете узнать об установке модуля. В частности, все модули вставляются в базу данных:

core_resource

Также я бы предложил начать с:

Mage_Core_Model_Resource_Setup

Также, возможно, вам поможет debug_backtrace (). Когда вы устанавливаете модуль в первый раз, вы можете узнать, как он был установлен.

ОБНОВЛЕНИЕ 1

Попробуйте отследить следующие функции:

/**
 * Processing object after save data
 *
 * @return Mage_Core_Model_Abstract
 */
protected function _afterSave()
{

/**
 * Callback function which called after transaction commit in resource model
 *
 * @return Mage_Core_Model_Abstract
 */
public function afterCommitCallback()
{

/**
 * Get array of objects transfered to default events processing
 *
 * @return array
 */
protected function _getEventData()
{

Ну, пожалуйста, укажите последнюю цель. Возможно, есть гораздо лучшее решение, чем через наблюдателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...