Я пытаюсь улучшить существующий платежный модуль (Paybox), и я уже несколько часов застрял в этом головокружительном сценарии: даже если я успешно могу сохранить модель в БД из исходной модели, я не могу вызвать / сохранить ееиз другого класса / модели.
Исходная модель:
class Quadra_Paybox_Model_Saved extends Mage_Core_Model_Abstract
{
public function saveCardInformation() {
$data['customer_id'] = 12;
$data['porteur'] = 'porteur';
$data['dateval'] = 'dateval';
$data['cvv'] = 'cvv';
$data['numtrans'] = 'numtrans';
$data['numappel'] = 'numappel';
$this->setData($data);
$this->save();
return $this;
}
}
Конечно, есть модель ресурса, прикрепленная к ней и работающая:
class Quadra_Paybox_Model_Mysql4_Saved extends Mage_Core_Model_Mysql4_Abstract {
public function _construct() {
$this->_init('paybox/saved', 'id');
}
}
Модель "вызова":
class Quadra_Paybox_Model_Direct extends Mage_Payment_Model_Method_Cc
{
public function saveCardInformationAlias() {
Mage::getModel('paybox/saved')->saveCardInformation();
}
public function capture(Varien_Object $payment, $amount)
{
$this->saveCardInformationAlias();
die('ok');
}
}
Обратите внимание, что эта модель расширяет Mage_Payment_Model_Method_Cc.Когда я пытаюсь расширить его, Mage_Core_Model_Abstract я получаю эту ошибку, которая может быть подсказкой, которую я не могу использовать / понять:
Error: Invalid method Quadra_Paybox_Model_Direct::prepareSave(Array ( ) )
Файл, который я использую для тестирования:
Я создал страницу CMS (identifier = testmodule), в которую встроен шаблон phtml (template / testmodule.phtml).Я вызываю это, перейдя на www.mydomain.com/testmodule. Вот код этого шаблона:
<?php
Mage::getModel('paybox/direct')->saveCardInformationAlias();
?>
Теперь самое сложное.Пошаговый сценарий:
Шаг 1- Перейдите по адресу www.mydomain.com/testmodule.Каждый поток проходит, БД корректно обновляется:
Шаг 2 - Поместите заказ на фронт-офис, который проходит через захват ()метод "вызывающей" модели Quadra_Paybox_Model_Direct:
Доказательство того, что процесс идет "хорошо": я получаю "ok", возвращаемое die('ok');
, но БД не обновляется!Он по-прежнему показывает:
Шаг 3- Перейдите снова на www.mydomain.com/testmodule ... и, неожиданно, новая строказдесь, но со скачком идентификатора (auto_increment):
Так вот, где мне нужна ваша большая помощь:
почему моя модель не сохраняет данные на шаге 2?
почему в поле идентификатора есть скачок, означающий, что каким-то образом запрос / вставка был отправлен в БД?
Я надеюсь, что эти объяснения ясны и дадут вам достаточно данных, чтобы поделиться вашими подсказками.
Редактировать: я также пробовал через direct core /писать запросы, а также через отправку события, которое я наблюдаю в 100% независимом модуле.В обоих случаях один и тот же вывод: вызов метода сам по себе, но вызов его в рабочем процессе не ... По-прежнему нет сохранения и скачка идентификатора в БД.