我試圖編寫一個將調用iFrame而不是標準CC塊的Magento付款模塊。當運行代碼時然而,當我下面出現以下錯誤:Magento自定義付款iFrame模塊錯誤
Fatal error: Call to a member function setMethod() on a non-object in /opt/bitnami/apps/magento/htdocs/app/code/core/Mage/Payment/Helper/Data.php on line 106
的Config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Lynch_Peach>
<!-- declare module's version information for database updates -->
<version>0.1.0</version>
</Lynch_Peach>
</modules>
<global>
<blocks>
<peach>
<class>Lynch_Peach_Block</class>
</peach>
</blocks>
<models>
<peach>
<class>Lynch_Peach_Model</class>
</peach>
</models>
<!-- declare resource setup for new module -->
<resources>
<!-- resource identifier -->
<peach_setup>
<!-- specify that this resource is a setup resource and used for upgrades -->
<setup>
<!-- which module to look for install/upgrade files in -->
<module>Lynch_Peach</module>
</setup>
<!-- specify database connection for this resource -->
<connection>
<!-- do not create new connection, use predefined core setup connection -->
<use>core_setup</use>
</connection>
</peach_setup>
<peach_write>
<connection>
<use>core_write</use>
</connection>
</peach_write>
<peach_read>
<connection>
<use>core_read</use>
</connection>
</peach_read>
</resources>
</global>
<!-- declare default configuration values for this module -->
<default>
<!-- 'payment' configuration section (tab) -->
<payment>
<!-- 'peach' configuration group (fieldset) -->
<peach>
<!-- by default this payment method is inactive -->
<active>0</active>
<!-- model to handle logic for this payment method -->
<model>peach/paymentMethod</model>
<!-- order status for new orders paid by this payment method -->
<order_status>pending</order_status>
<!-- default title for payment checkout page and order view page -->
<title>Peach Payments</title>
<cctypes>VI,MC</cctypes>
<payment_action>authorize_capture</payment_action>
<allowspecific>0</allowspecific>
</peach>
</payment>
</default>
</config>
付款Method.php
<?php
class Lynch_Peach_Model_PaymentMethod extends Mage_Payment_Model_Method_Cc
{
protected $_code = 'peach';
protected $_formBlockType = 'peach/form';
protected $_isGateway = false;
protected $_canAuthorize = false;
protected $_canCapture = false;
protected $_canCapturePartial = false;
protected $_canRefund = false;
protected $_canVoid = false;
protected $_canUseInternal = false;
protected $_canUseCheckout = true;
protected $_canUseForMultishipping = false;
protected $_canSaveCc = false;
public function createFormBlock($name)
{
$block = $this->getLayout()->createBlock('peach/form', $name)
->setMethod('peach')
->setPayment($this->getPayment())
->setTemplate('peach/form.phtml');
return $block;
}
}
?>
form.php的:
<?php
class Lynch_Peach_Block_Form extends Mage_Payment_Block_Form
{
// {{{ _construct()
/**
* _construct()
*/
protected function _construct()
{
parent::_construct();
$$this->setTemplate('peach/form.phtml');
}
// }}}
}
?>
看起來不錯。 你哪裏有這個錯誤? 你在哪裏使用'createFormBlock'函數? – Sergey 2013-02-25 16:09:30