2010-08-11 93 views
1

我试图获得在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-&gt;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-&gt;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-&gt;getMainTable() 
#4 /home/users/A000456/shoppingonline.be/www.shoppingonline.be/app/code/core/Mage/Core/Model/Abstract.php(306): Mage_Core_Model_Mysql4_Abstract-&gt;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的接口正常降耗工作正常)

回答

0

我的第一个想法是,在另一个PHP文件的上下文中启动Magento,但没有Magento在引导自身时提供的所有修复程序,似乎有风险。

阻力最小的路径是,除了极少数例外情况,让Magento成为Magento并做它的事情,越少越好。考虑到这一点,您可以设置一个Magento控制器/操作并从那里调用这些数据,甚至可以远程使用它(例如使用file_get_contents)?

+0

我知道,但我一直在做一堆ajax的东西,到目前为止一切工作都很完美。我想我只是将我的rates数组放到webservicex的核心货币模块的子模块中。我知道修改代码并不是一个好主意,但我正在做的这个项目充满了这种东西,无论如何只是一次。只要我不破坏现有的代码,就不会有任何问题。 感谢您的回复。 – Rakward 2010-08-11 16:51:16

1

好像你想要保存目录/货币,当你需要保存目录/ 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