2013-02-25 79 views
0

我試圖編寫一個將調用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'); 
    } 
    // }}} 
} 

?> 
+0

看起來不錯。 你哪裏有這個錯誤? 你在哪裏使用'createFormBlock'函數? – Sergey 2013-02-25 16:09:30

回答

0

您在表單構造函數中有$ $$。

0

您可以嘗試應用以下更改。

protected $_formBlockType = 'peach/form'; 

改變上述像如下因素,

protected $_formBlockType = 'peach/Form'; 

通常,如果你正在運行在Windows環境下您的應用程序,這並不重要。但是在非Windows環境下運行可能會造成問題。