2013-02-25 2 views
0

Я пытаюсь закодировать модуль платежей Magento, который вызовет iFrame, а не стандартный блок CC. Однако, когда при запуске кода ниже я получаю следующее сообщение об ошибке:Ошибка модуля ошибки iFrame Magento

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

ответ

0

У вас есть двойной $$ в конструкторе формы.

0

Вы можете попробовать, применив следующие изменения.

protected $_formBlockType = 'peach/form'; 

изменения выше, как folowing,

protected $_formBlockType = 'peach/Form'; 

обычно это не имеет значения, если вы работаете приложения в среде Windows. Но это может быть проблемой при работе в среде, отличной от Windows.

Смежные вопросы