Vorige week was ik bezig met Magento en probeerde ik verschillende winkelweergaven in te stellen. In principe heeft de klant een individuele winkelweergave nodig voor elk land met een andere basis-URL. Bijvoorbeeld, als de basis-URL van je hoofdwinkel www.domain.com is, en je hebt één winkelweergave voor de VS, dan zou de basis-URL www.domain.com/us/ zijn.

Alles ging goed, maar ik stuitte op een probleem met het afrekenproces. Als je naar de Amerikaanse winkel gaat, enkele producten aan je winkelwagentje toevoegt en vervolgens probeert af te rekenen, kun je een probleem tegenkomen waarbij de pagina terugleidt naar de winkelwagentjespagina, hetzij vóór het invoeren van de factuurgegevens, hetzij erna. Als je opnieuw probeert af te rekenen, herhaalt hetzelfde proces zich. Eigenlijk stuurt Magento het verzoek voor de factuurgegevens naar de server met behulp van Ajax, en soms kun je de fout niet zien. Je kunt de fout echter wel zien in je exceptielogbestand of systeemlog. Helaas, terwijl ik het probleem aan het testen was, kon ik geen foutmelding zien in het exceptielog of systeemlog, dus deed ik wat debugging via de Prototype Ajax-functie, die communiceert met de server voor verzoeken om factuurgegevens.

open opcheckout.js en zoek de onderstaande code:

var request = new Ajax.Request(

this.saveUrl,

{

methode: 'post',

onComplete: this.onComplete,

onSuccess: this.onSave,

onFailure: checkout.ajaxFailure.bind(checkout),

parameters: Form.serialize(this.form)

}

);

en maak de volgende wijzigingen, zodat deze waarschuwing het foutbericht is

var request = new Ajax.Request(

this.saveUrl,

{

methode: 'post',

onComplete: this.onComplete,

onSuccess: this.onSave,

onFailure: function(transport){alert(transport.responseText)},

parameters: Form.serialize(this.form)

}

);

Dus, als er een fout is, zie je een waarschuwingsbericht: “Kan de Royal Mail prijsgegevens csv voor ‘$file’ niet laden. Zorg ervoor dat de app/ directory in je include pad staat.”

Eigenlijk is het probleem dat ik heb gevonden (in mijn geval kan het iets anders voor jou zijn) dat de Meanbee Royal Mail-extensie de verzendkosten opslaat in een CSV-bestand in de app/code/community/Meanbee/Royalmail/data map. Wanneer we proberen af te rekenen vanuit een andere winkelweergave, en misschien de basis-URL anders is (hier was het iets als www.domain.com/us/), zoekt de Meanbee-functie _loadCsv($file) in de Abstract.php-klasse altijd naar het bestand in de basis-URL-map. Dus, het zal een foutmelding voor een ongeldig bestands pad tegenkomen. Als je de volgende wijzigingen aanbrengt in de _loadCsv-functie, kun je deze fout verhelpen.

$filename = “/app/code/community/Meanbee/Royalmail/data/{$file}.csv”;

//vervang bovenstaande regel met

$filename = Mage::getBaseDir(‘app’) . “/code/community/Meanbee/Royalmail/data/{$file}.csv”;

//het zal altijd vanuit de basisdirectory kijken

Ik kan geen garantie geven dat dit 100% perfect voor jou zal werken, maar dit heeft mijn probleem opgelost.