0

標準の CC ブロックではなく iFrame を呼び出す Magento Payments モジュールをコーディングしようとしています。ただし、以下のコードを実行すると、次のエラーが発生します。

致命的なエラー: 106 行目の /opt/bitnami/apps/magento/htdocs/app/code/core/Mage/Payment/Helper/Data.php の非オブジェクトに対するメンバー関数 setMethod() の呼び出し

構成.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>

お支払い方法.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;
    }

}
?>

フォーム.php:

<?php
class Lynch_Peach_Block_Form extends Mage_Payment_Block_Form
{
    // {{{ _construct()
    /**
     * _construct() 
     */    
    protected function _construct()
    {
        parent::_construct();
        $$this->setTemplate( 'peach/form.phtml' );
    }
    // }}}
}

?>
4

2 に答える 2

0

フォーム コンストラクターに $$ が 2 つあります。

于 2013-02-25T17:41:31.357 に答える
0

次の変更を適用して試すことができます。

protected $_formBlockType = 'peach/form';

上記を次のように変更し、

protected $_formBlockType = 'peach/Form';

通常、Windows 環境でアプリケーションを実行している場合、これは問題になりません。ただし、Windows 以外の環境で実行すると、これが問題になる場合があります。

于 2013-10-14T05:50:46.010 に答える