[英]How to add custom php files in magento module?
我正在構建一個Magento擴展程序來進行稅額計算,並且在多個地方必須調用Web服務呼叫。 出於這個原因,我必須創建一個PHP類,該類要創建可以調用Web服務的表單,因此我的模板代碼更少。 這是我需要從以下位置調用Web服務的以下位置
\app\code\community\Company\MyModule\Model\Tax\Sales\Total\Quote\Tax.php
\app\code\community\Company\MyModule\Model\Observer.php
我已經創建了幾個類,並將它們放在\\lib\\my_libname\\
文件夾下。 當我嘗試訪問該文件時,雖然出現以下錯誤:帶有消息“警告”的異常“異常”:include(WebServiceCall.php):無法打開流:在該文件中沒有此類文件或目錄
C:\wamp\www\magento1\lib\Varien\Autoload.php on line 94' in C:\wamp\www\magento1\app\code\core\Mage\Core\functions.php:245
Stack trace:
#0 C:\wamp\www\magento1\lib\Varien\Autoload.php(94): mageCoreErrorHandler(2, 'include(MyModule...', 'C:\\wamp\\www\\mag...', 94, Array)
#1 C:\wamp\www\magento1\lib\Varien\Autoload.php(94): Varien_Autoload::autoload()
#2 [internal function]: Varien_Autoload->autoload('WebServiceCall')
#3 C:\wamp\www\magento1\app\code\community\Company\MyModule\Model\Tax\Sales\Total\Quote\Tax.php(9): spl_autoload_call('WebServiceCall')
#4 C:\wamp\www\magento1\app\code\core\Mage\Sales\Model\Quote\Address.php(1013): Company_MyModule_Model_Tax_Sales_Total_Quote_Tax->collect(Object(Mage_Sales_Model_Quote_Address))
#5 C:\wamp\www\magento1\app\code\core\Mage\Sales\Model\Quote.php(1331): Mage_Sales_Model_Quote_Address->collectTotals()
#6 C:\wamp\www\magento1\app\code\core\Mage\Checkout\Model\Cart.php(458): Mage_Sales_Model_Quote->collectTotals()
#7 C:\wamp\www\magento1\app\code\core\Mage\Checkout\controllers\CartController.php(223): Mage_Checkout_Model_Cart->save()
#8 C:\wamp\www\magento1\app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Checkout_CartController->addAction()
#9 C:\wamp\www\magento1\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('add')
#10 C:\wamp\www\magento1\app\code\core\Mage\Core\Controller\Varien\Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#11 C:\wamp\www\magento1\app\code\core\Mage\Core\Model\App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#12 C:\wamp\www\magento1\app\Mage.php(684): Mage_Core_Model_App->run(Array)
#13 C:\wamp\www\magento1\index.php(83): Mage::run('', 'store')
#14 {main}
首先,您需要了解Magento如何加載文件:
/**
* Set include path
*/
$paths = array();
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';
$appPath = implode(PS, $paths);
set_include_path($appPath . PS . Mage::registry('original_include_path'));
第二件事是文件夾和類名的位置-Magento正在使用自動加載器,因此您可以像這樣調用類:
$object = new My_Class();
這將轉換為對以下內容的調用:
lib/My/Class.php
如果您使用的是* NIX系統,則全部區分大小寫。
如果您檢查自動裝帶器,您將看到:
$classFile = str_replace(' ', DIRECTORY_SEPARATOR, ucwords(str_replace('_', ' ', $class)));
$classFile.= '.php';
return include $classFile;
因此,在您的情況下,路徑應為:lib / My / Libname / ClassName.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.