Yeni Ödeme modülü ile Magento alışveriş sepeti yükleme, ben bir hata alıyorum ne zaman izlemek mümkün olmamıştır

2 Cevap php

Ben Magento yeni bir ödeme modülü eklemek çalışıyorum. Ancak, hatta kod büyük çoğunluğu yorumunu kaldırdıktan sonra, ben hala aşağıdaki hatayı alıyorum:

Fatal error: Call to a member function isAvailable() on a non-object in /var/www/html/app/code/core/Mage/Payment/Helper/Data.php  on line 71

Ben Magento 1.4.0.1 kullanıyorum ve önbelleğini devre dışı bıraktık. Hatta sadece durumda önbellek birkaç kez boşaltılmalıdır.

Şu anda dışarı yorumladı değil sadece kod öğreticiler here ve here dayanmaktadır.

Sepeti yönetim alanı veya ön ucundan ya yüklendiğinde hata oluşur.

Benzer bir sorun haline tükendi Orada kimse var mı? Ben kodu göndermek istiyorsunuz, ama nakledilmesi gerekiyor emin değilim.

Yardımlarınız için teşekkürler.


Edit

app / etc / modules / CPAP_All.xml

<?xml version="1.0"?>
<config>
    <modules>
        <CPAP_AuthorizeCim>
            <active>true</active>
            <codePool>local</codePool>
        </CPAP_AuthorizeCim>
    </modules>
</config>

app / kod / local / CPAP / AuthorizeCim / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <CPAP_AuthorizeCim>
            <version>0.1.0</version>
        </CPAP_AuthorizeCim>
    </modules>
    <global>
        <models>
            <authorizecim>
                <class>CPAP_AuthorizeCim_Model</class>
            </authorizecim>
        </models>
        <resources>
            <authorizecim_setup>
                <setup>
                    <module>CPAP_AuthorizeCim</module>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </authorizecim_setup>
            <authorizecim_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </authorizecim_write>
            <authorizecim_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </authorizecim_read>
        </resources>
    </global>
    <default>
        <payment>
            <authorizecim>
                <active>0</active>
                <model>authorizecim/paymentmethod</model>
                <order_status>pending</order_status>
                <cctypes>AE,VI,MC,DI</cctypes>
                <login backend_model="adminhtml/system_config_backend_encrypted"/>
                <trans_key backend_model="adminhtml/system_config_backend_encrypted"/>
                <payment_action>authorize</payment_action>
                <allowspecific>0</allowspecific>
            </authorizecim>
        </payment>
    </default>
</config>

app / kod / local / CPAP / AuthorizeCim / Model / Paymentmethod.php

class CPAP_AuthorizeCim_Model_Authorizenet
{
}

Ben yorum ise <model>authorizecim/paymentmethod</model> config.xml dan sonra hata kaybolduktan, ama benim ödeme seçeneği sepetinde bir seçenek olarak göstermez.

2 Cevap

(Bu yazı kendini bağlantıları için şimdiden yarı-appologies, ama gayri resmi Magento geliştirici kılavuzunu) en azından şimdilik (gibi görünüyor)

Bu (yukarıda bahsedilen Data.php dosyası) size sorunlara neden oluyor kodudur

if (!$model = Mage::getStoreConfig($prefix . 'model', $store)) {
    // Mage::Log('could not get model for ' . $prefix);
    continue;
}

$methodInstance = Mage::getModel($model);
if (!$methodInstance->isAvailable($quote)) {
    // Mage::Log($model . ' is not avaiablable' );
    /* if the payment method can not be used at this time */
    continue;
}

Magento bir sınıf adı, ya da modelini başlatır getModel, için çağrı kullanmak için bir URI stil yolu ya için system config seaching edilir.

$methodInstance = Mage::getModel('authorizecim/paymentmethod');

Yani, sorun gerekiyordu gibi authorizecim / PAYMENTMETHOD bir Magento classname için çözülmesi olmasıdır. (Eğer bu Commerce Bug demo (Sınıf / URI arama sekmesini deneyin takip yoksa).

Yani, authorizecim / PAYMENTMETHOD classname çözmek için gidiyor

CPAP_AuthorizeCim_Model_Paymentmethod

authorizecim == look in config for this name in the <models /> section 
and use it's value as a basename (CPAP_AuthorizeCim_Model)

paymentmethod = append this with underscore word upper casing
(Paymentmethod) and append to above string to give us 
CPAP_AuthorizeCim_Model_Paymentmethod

Yani, Magento "CPAP_AuthorizeCim_Model_Paymentmethod" örneğini PHP söyler. Ancak, bu sınıf değil belleğine yüklenir, bu nedenle __ özdevinimli_yükle devraldı ve en dosyasını yükler

CPAP/AuthorizeCim/Model/Paymentmethod.php

Hangi sorun için bize getiriyor PHP dosyası olduğunu. Sizin sınıf adlandırılır

CPAP_AuthorizeCim_Model_Authorizenet

Adını gerektiğinde

CPAP_AuthorizeCim_Model_Paymentmethod

Eğer yeni ödeme yöntemini etkinleştirmek için (muhtemelen bir modülün config.xml dosyasında) config ekledim gibi görünüyor. Magento Ödeme yöntemi için bir sınıf yüklemeye çalışıyor, ancak istediği sınıfı yok, çünkü dışarı erroring edilir. Eğer modülün parçası olarak tanımlanan ettik yaptığınız XML değişiklikleri ve yeni modeller verin.

Thanks! Joe