Magento自定义货币保存?
问题描述:
我试图获得在Magento一个单独的PHP文件的一些货币的汇率,并将其保存:Magento自定义货币保存?
<?php
// Initiate application
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
Mage::app();
// Code to create my $rates array
/** CODE **/
foreach ($rates as $currencyCode => $currencyRates) {
Mage::getModel('directory/currency')
->setId($currencyCode)
->setRates($currencyRates)
->save();
}
错误:
<br />
<b>Fatal error</b>: Uncaught exception 'Mage_Core_Exception' with message 'Cannot retrieve entity config: directory/currency' in /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/Mage.php:550
Stack trace:
#0 /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/code/core/Mage/Core/Model/Resource.php(161): Mage::throwException('Cannot retrieve...')
#1 /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/code/core/Mage/Core/Model/Mysql4/Abstract.php(265): Mage_Core_Model_Resource->getTableName('directory/curre...')
#2 /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/code/core/Mage/Core/Model/Mysql4/Abstract.php(247): Mage_Core_Model_Mysql4_Abstract->getTable('currency')
#3 /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/code/core/Mage/Core/Model/Mysql4/Abstract.php(402): Mage_Core_Model_Mysql4_Abstract->getMainTable()
#4 /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/code/core/Mage/Core/Model/Abstract.php(306): Mage_Core_Model_Mysql4_Abstract->save(in <b>/home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/Mage.php</b> on line <b>550</b><br />
我原来是保存() - 方法发生这种情况。
想法?不知道从哪里开始调试。如果我知道在哪里率在被存储也将是确定的,所以我想可以用手工将它们插入...
(我把代码从Mage_Directory_Model_Currency_Import_Abstract类,通过Magento的接口正常降耗工作正常)
答
我的第一个想法是,在另一个PHP文件的上下文中启动Magento,但没有Magento在引导自身时提供的所有修复程序,似乎有风险。
阻力最小的路径是,除了极少数例外情况,让Magento成为Magento并做它的事情,越少越好。考虑到这一点,您可以设置一个Magento控制器/操作并从那里调用这些数据,甚至可以远程使用它(例如使用file_get_contents
)?
答
好像你想要保存目录/货币,当你需要保存目录/ currency_rate。最简单的方法是在您创建的目录/货币模型上使用saveRates方法。即
Array
(
[USD] => Array
(
[CAD] => 1.07
[GBP] => .63
[EUR] => .71
)
)
$currency = Mage::getModel('directory/currency')->saveRates($currencies);
+0
这对我有用。这就是手动货币导入页面上的CurrencyController所完成的操作。 – Tspoon 2015-01-22 08:30:24
我知道,但我一直在做一堆ajax的东西,到目前为止一切工作都很完美。我想我只是将我的rates数组放到webservicex的核心货币模块的子模块中。我知道修改代码并不是一个好主意,但我正在做的这个项目充满了这种东西,无论如何只是一次。只要我不破坏现有的代码,就不会有任何问题。 感谢您的回复。 – Rakward 2010-08-11 16:51:16