簡體   English   中英

如何在magento模塊中添加自定義php文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM