如何在magento模块中添加自定义php文件?

时间:2016-01-08 16:21:21

标签: php magento

我正在为税务计算构建一个Magento扩展,我有多个地方需要调用Web服务。出于这个原因,我必须创建一个PHP类,我想创建表单,我可以调用Web服务,所以我有更少的样板代码。以下是我需要从

调用web服务的地方
var group = new fabric.Group();

for (var i = 0; i < count; i++) {
    var Bid = '#' + i;
    var Bheight = $(Bid).height();
    var Bwidth = $(Bid).width();
    var Btop = $(Bid).position().top;
    var Bleft = $(Bid).position().left;
    alert(Bleft);

    var clipRect = new fabric.Rect({
        originX: 'left',
        originY: 'top',
        height: Bheight,
        width: Bwidth,
        left: Bleft,
        top: Btop,
        fill: '#DDD',
        opacity: 0.5,
        strokeWidth: 0,
        selectable: false
    });


    group.addWithUpdate(clipRect);
}

canvas.add(group);
canvas.centerObject(group);
canvas.renderAll();

我已经创建了几个类并将它们放在\app\code\community\Company\MyModule\Model\Tax\Sales\Total\Quote\Tax.php \app\code\community\Company\MyModule\Model\Observer.php 文件夹下。当我尝试访问该文件时,我收到以下错误: 异常'异常',消息'警告:include(WebServiceCall.php):无法打开流:

中没有此类文件或目录
\lib\my_libname\

1 个答案:

答案 0 :(得分:0)

对于初学者,您需要了解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'));

第二件事是文件夹&amp;类名称位置 - 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